From 758685fe57a71ebfb3ddac71d34eb52adb381b49 Mon Sep 17 00:00:00 2001 From: Vectozavr <60608292+vectozavr@users.noreply.github.com> Date: Sat, 9 Oct 2021 17:41:12 +0700 Subject: [PATCH] OS Windows support --- Bonus.cpp | 0 Bonus.h | 2 +- CMakeLists.txt | 8 +- Client.cpp | 3 +- Client.h | 2 +- Player.cpp | 14 +- Player.h | 16 +- PlayerController.cpp | 60 +- PlayerController.h | 7 +- README.md | 0 SFML/bin/openal32.dll | Bin 0 -> 630784 bytes SFML/bin/sfml-audio-2.dll | Bin 0 -> 911872 bytes SFML/bin/sfml-audio-d-2.dll | Bin 0 -> 1372672 bytes SFML/bin/sfml-graphics-2.dll | Bin 0 -> 667648 bytes SFML/bin/sfml-graphics-d-2.dll | Bin 0 -> 1435136 bytes SFML/bin/sfml-network-2.dll | Bin 0 -> 106496 bytes SFML/bin/sfml-network-d-2.dll | Bin 0 -> 330752 bytes SFML/bin/sfml-system-2.dll | Bin 0 -> 43008 bytes SFML/bin/sfml-system-d-2.dll | Bin 0 -> 188928 bytes SFML/bin/sfml-window-2.dll | Bin 0 -> 99840 bytes SFML/bin/sfml-window-d-2.dll | Bin 0 -> 339968 bytes SFML/doc/html/AlResource_8hpp_source.html | 58 + SFML/doc/html/Audio_2Export_8hpp_source.html | 56 + SFML/doc/html/Audio_8hpp_source.html | 56 + SFML/doc/html/BlendMode_8hpp_source.html | 77 + SFML/doc/html/CircleShape_8hpp_source.html | 60 + SFML/doc/html/Clipboard_8hpp_source.html | 59 + SFML/doc/html/Clock_8hpp_source.html | 59 + SFML/doc/html/Color_8hpp_source.html | 71 + SFML/doc/html/Config_8hpp_source.html | 57 + .../doc/html/ContextSettings_8hpp_source.html | 70 + SFML/doc/html/Context_8hpp_source.html | 61 + SFML/doc/html/ConvexShape_8hpp_source.html | 60 + SFML/doc/html/Cursor_8hpp_source.html | 74 + SFML/doc/html/Drawable_8hpp_source.html | 61 + SFML/doc/html/Err_8hpp_source.html | 58 + SFML/doc/html/Event_8hpp_source.html | 146 ++ .../doc/html/FileInputStream_8hpp_source.html | 60 + SFML/doc/html/Font_8hpp_source.html | 63 + SFML/doc/html/Ftp_8hpp_source.html | 70 + SFML/doc/html/GlResource_8hpp_source.html | 60 + SFML/doc/html/Glsl_8hpp_source.html | 70 + SFML/doc/html/Glyph_8hpp_source.html | 63 + SFML/doc/html/GpuPreference_8hpp.html | 98 + SFML/doc/html/GpuPreference_8hpp_source.html | 56 + .../html/Graphics_2Export_8hpp_source.html | 56 + SFML/doc/html/Graphics_8hpp_source.html | 56 + SFML/doc/html/Http_8hpp_source.html | 71 + SFML/doc/html/Image_8hpp_source.html | 62 + SFML/doc/html/InputSoundFile_8hpp_source.html | 62 + SFML/doc/html/InputStream_8hpp_source.html | 59 + SFML/doc/html/IpAddress_8hpp_source.html | 64 + SFML/doc/html/Joystick_8hpp_source.html | 71 + SFML/doc/html/Keyboard_8hpp_source.html | 160 ++ SFML/doc/html/Listener_8hpp_source.html | 59 + SFML/doc/html/Lock_8hpp_source.html | 60 + SFML/doc/html/Main_8hpp_source.html | 56 + .../html/MemoryInputStream_8hpp_source.html | 59 + SFML/doc/html/Mouse_8hpp_source.html | 68 + SFML/doc/html/Music_8hpp_source.html | 69 + SFML/doc/html/Mutex_8hpp_source.html | 59 + SFML/doc/html/NativeActivity_8hpp_source.html | 58 + .../doc/html/Network_2Export_8hpp_source.html | 56 + SFML/doc/html/Network_8hpp_source.html | 56 + SFML/doc/html/NonCopyable_8hpp_source.html | 60 + SFML/doc/html/OpenGL_8hpp_source.html | 56 + .../doc/html/OutputSoundFile_8hpp_source.html | 60 + SFML/doc/html/Packet_8hpp_source.html | 61 + SFML/doc/html/PrimitiveType_8hpp_source.html | 68 + SFML/doc/html/Rect_8hpp_source.html | 66 + SFML/doc/html/RectangleShape_8hpp_source.html | 60 + SFML/doc/html/RenderStates_8hpp_source.html | 67 + SFML/doc/html/RenderTarget_8hpp_source.html | 73 + SFML/doc/html/RenderTexture_8hpp_source.html | 62 + SFML/doc/html/RenderWindow_8hpp_source.html | 67 + SFML/doc/html/Sensor_8hpp_source.html | 66 + SFML/doc/html/Shader_8hpp_source.html | 76 + SFML/doc/html/Shape_8hpp_source.html | 67 + SFML/doc/html/Sleep_8hpp_source.html | 58 + SFML/doc/html/SocketHandle_8hpp_source.html | 57 + SFML/doc/html/SocketSelector_8hpp_source.html | 61 + SFML/doc/html/Socket_8hpp_source.html | 67 + .../html/SoundBufferRecorder_8hpp_source.html | 60 + SFML/doc/html/SoundBuffer_8hpp_source.html | 63 + .../html/SoundFileFactory_8hpp_source.html | 61 + .../doc/html/SoundFileReader_8hpp_source.html | 64 + .../doc/html/SoundFileWriter_8hpp_source.html | 59 + SFML/doc/html/SoundRecorder_8hpp_source.html | 61 + SFML/doc/html/SoundSource_8hpp_source.html | 64 + SFML/doc/html/SoundStream_8hpp_source.html | 63 + SFML/doc/html/Sound_8hpp_source.html | 62 + SFML/doc/html/Sprite_8hpp_source.html | 66 + SFML/doc/html/String_8hpp_source.html | 61 + SFML/doc/html/System_2Export_8hpp_source.html | 56 + SFML/doc/html/System_8hpp_source.html | 56 + SFML/doc/html/TcpListener_8hpp_source.html | 63 + SFML/doc/html/TcpSocket_8hpp_source.html | 65 + SFML/doc/html/Text_8hpp_source.html | 69 + SFML/doc/html/Texture_8hpp_source.html | 69 + SFML/doc/html/ThreadLocalPtr_8hpp_source.html | 63 + SFML/doc/html/ThreadLocal_8hpp_source.html | 59 + SFML/doc/html/Thread_8hpp_source.html | 59 + SFML/doc/html/Time_8hpp_source.html | 59 + SFML/doc/html/Touch_8hpp_source.html | 60 + SFML/doc/html/Transform_8hpp_source.html | 61 + SFML/doc/html/Transformable_8hpp_source.html | 60 + SFML/doc/html/UdpSocket_8hpp_source.html | 62 + SFML/doc/html/Utf_8hpp_source.html | 61 + SFML/doc/html/Vector2_8hpp_source.html | 61 + SFML/doc/html/Vector3_8hpp_source.html | 62 + SFML/doc/html/VertexArray_8hpp_source.html | 64 + SFML/doc/html/VertexBuffer_8hpp_source.html | 67 + SFML/doc/html/Vertex_8hpp_source.html | 63 + SFML/doc/html/VideoMode_8hpp_source.html | 61 + SFML/doc/html/View_8hpp_source.html | 61 + SFML/doc/html/WindowHandle_8hpp_source.html | 58 + SFML/doc/html/WindowStyle_8hpp_source.html | 63 + SFML/doc/html/Window_2Export_8hpp_source.html | 56 + SFML/doc/html/Window_2Window_8hpp_source.html | 70 + SFML/doc/html/Window_8hpp_source.html | 56 + SFML/doc/html/annotated.html | 162 ++ SFML/doc/html/bc_s.png | Bin 0 -> 676 bytes SFML/doc/html/bdwn.png | Bin 0 -> 147 bytes SFML/doc/html/classes.html | 130 + .../html/classsf_1_1AlResource-members.html | 63 + SFML/doc/html/classsf_1_1AlResource.html | 154 ++ SFML/doc/html/classsf_1_1AlResource.png | Bin 0 -> 2327 bytes .../html/classsf_1_1CircleShape-members.html | 103 + SFML/doc/html/classsf_1_1CircleShape.html | 1478 ++++++++++++ SFML/doc/html/classsf_1_1CircleShape.png | Bin 0 -> 1009 bytes .../html/classsf_1_1Clipboard-members.html | 63 + SFML/doc/html/classsf_1_1Clipboard.html | 152 ++ SFML/doc/html/classsf_1_1Clock-members.html | 64 + SFML/doc/html/classsf_1_1Clock.html | 154 ++ SFML/doc/html/classsf_1_1Color-members.html | 86 + SFML/doc/html/classsf_1_1Color.html | 987 ++++++++ SFML/doc/html/classsf_1_1Context-members.html | 75 + SFML/doc/html/classsf_1_1Context.html | 392 +++ SFML/doc/html/classsf_1_1Context.png | Bin 0 -> 734 bytes .../html/classsf_1_1ConvexShape-members.html | 102 + SFML/doc/html/classsf_1_1ConvexShape.html | 1456 ++++++++++++ SFML/doc/html/classsf_1_1ConvexShape.png | Bin 0 -> 1022 bytes SFML/doc/html/classsf_1_1Cursor-members.html | 82 + SFML/doc/html/classsf_1_1Cursor.html | 335 +++ SFML/doc/html/classsf_1_1Cursor.png | Bin 0 -> 506 bytes .../doc/html/classsf_1_1Drawable-members.html | 64 + SFML/doc/html/classsf_1_1Drawable.html | 191 ++ SFML/doc/html/classsf_1_1Drawable.png | Bin 0 -> 2175 bytes SFML/doc/html/classsf_1_1Event-members.html | 99 + SFML/doc/html/classsf_1_1Event.html | 505 ++++ .../classsf_1_1FileInputStream-members.html | 71 + SFML/doc/html/classsf_1_1FileInputStream.html | 334 +++ SFML/doc/html/classsf_1_1FileInputStream.png | Bin 0 -> 842 bytes SFML/doc/html/classsf_1_1Font-members.html | 75 + SFML/doc/html/classsf_1_1Font.html | 568 +++++ SFML/doc/html/classsf_1_1Ftp-members.html | 85 + SFML/doc/html/classsf_1_1Ftp.html | 745 ++++++ SFML/doc/html/classsf_1_1Ftp.png | Bin 0 -> 488 bytes ...f_1_1Ftp_1_1DirectoryResponse-members.html | 111 + .../classsf_1_1Ftp_1_1DirectoryResponse.html | 411 ++++ .../classsf_1_1Ftp_1_1DirectoryResponse.png | Bin 0 -> 686 bytes ...ssf_1_1Ftp_1_1ListingResponse-members.html | 111 + .../classsf_1_1Ftp_1_1ListingResponse.html | 422 ++++ .../classsf_1_1Ftp_1_1ListingResponse.png | Bin 0 -> 659 bytes .../classsf_1_1Ftp_1_1Response-members.html | 109 + SFML/doc/html/classsf_1_1Ftp_1_1Response.html | 377 +++ SFML/doc/html/classsf_1_1Ftp_1_1Response.png | Bin 0 -> 970 bytes .../html/classsf_1_1GlResource-members.html | 64 + SFML/doc/html/classsf_1_1GlResource.html | 214 ++ SFML/doc/html/classsf_1_1GlResource.png | Bin 0 -> 1764 bytes ...ource_1_1TransientContextLock-members.html | 65 + ...1_1GlResource_1_1TransientContextLock.html | 131 + ..._1_1GlResource_1_1TransientContextLock.png | Bin 0 -> 769 bytes SFML/doc/html/classsf_1_1Glyph-members.html | 65 + SFML/doc/html/classsf_1_1Glyph.html | 185 ++ SFML/doc/html/classsf_1_1Http-members.html | 67 + SFML/doc/html/classsf_1_1Http.html | 263 ++ SFML/doc/html/classsf_1_1Http.png | Bin 0 -> 489 bytes .../classsf_1_1Http_1_1Request-members.html | 74 + SFML/doc/html/classsf_1_1Http_1_1Request.html | 352 +++ .../classsf_1_1Http_1_1Response-members.html | 92 + .../doc/html/classsf_1_1Http_1_1Response.html | 345 +++ SFML/doc/html/classsf_1_1Image-members.html | 77 + SFML/doc/html/classsf_1_1Image.html | 650 +++++ .../classsf_1_1InputSoundFile-members.html | 77 + SFML/doc/html/classsf_1_1InputSoundFile.html | 481 ++++ SFML/doc/html/classsf_1_1InputSoundFile.png | Bin 0 -> 559 bytes .../html/classsf_1_1InputStream-members.html | 66 + SFML/doc/html/classsf_1_1InputStream.html | 281 +++ SFML/doc/html/classsf_1_1InputStream.png | Bin 0 -> 911 bytes .../html/classsf_1_1IpAddress-members.html | 75 + SFML/doc/html/classsf_1_1IpAddress.html | 561 +++++ .../doc/html/classsf_1_1Joystick-members.html | 80 + SFML/doc/html/classsf_1_1Joystick.html | 478 ++++ .../doc/html/classsf_1_1Keyboard-members.html | 172 ++ SFML/doc/html/classsf_1_1Keyboard.html | 539 +++++ .../doc/html/classsf_1_1Listener-members.html | 72 + SFML/doc/html/classsf_1_1Listener.html | 537 +++++ SFML/doc/html/classsf_1_1Lock-members.html | 65 + SFML/doc/html/classsf_1_1Lock.html | 154 ++ SFML/doc/html/classsf_1_1Lock.png | Bin 0 -> 491 bytes .../classsf_1_1MemoryInputStream-members.html | 68 + .../html/classsf_1_1MemoryInputStream.html | 313 +++ .../doc/html/classsf_1_1MemoryInputStream.png | Bin 0 -> 657 bytes SFML/doc/html/classsf_1_1Mouse-members.html | 76 + SFML/doc/html/classsf_1_1Mouse.html | 357 +++ SFML/doc/html/classsf_1_1Music-members.html | 109 + SFML/doc/html/classsf_1_1Music.html | 1445 +++++++++++ SFML/doc/html/classsf_1_1Music.png | Bin 0 -> 919 bytes SFML/doc/html/classsf_1_1Mutex-members.html | 67 + SFML/doc/html/classsf_1_1Mutex.html | 186 ++ SFML/doc/html/classsf_1_1Mutex.png | Bin 0 -> 511 bytes .../html/classsf_1_1NonCopyable-members.html | 63 + SFML/doc/html/classsf_1_1NonCopyable.html | 172 ++ SFML/doc/html/classsf_1_1NonCopyable.png | Bin 0 -> 6259 bytes .../classsf_1_1OutputSoundFile-members.html | 67 + SFML/doc/html/classsf_1_1OutputSoundFile.html | 225 ++ SFML/doc/html/classsf_1_1OutputSoundFile.png | Bin 0 -> 576 bytes SFML/doc/html/classsf_1_1Packet-members.html | 105 + SFML/doc/html/classsf_1_1Packet.html | 1156 +++++++++ SFML/doc/html/classsf_1_1Rect-members.html | 75 + SFML/doc/html/classsf_1_1Rect.html | 630 +++++ .../classsf_1_1RectangleShape-members.html | 102 + SFML/doc/html/classsf_1_1RectangleShape.html | 1434 +++++++++++ SFML/doc/html/classsf_1_1RectangleShape.png | Bin 0 -> 1060 bytes .../html/classsf_1_1RenderStates-members.html | 72 + SFML/doc/html/classsf_1_1RenderStates.html | 409 ++++ .../html/classsf_1_1RenderTarget-members.html | 84 + SFML/doc/html/classsf_1_1RenderTarget.html | 822 +++++++ SFML/doc/html/classsf_1_1RenderTarget.png | Bin 0 -> 1080 bytes .../classsf_1_1RenderTexture-members.html | 94 + SFML/doc/html/classsf_1_1RenderTexture.html | 1264 ++++++++++ SFML/doc/html/classsf_1_1RenderTexture.png | Bin 0 -> 814 bytes .../html/classsf_1_1RenderWindow-members.html | 120 + SFML/doc/html/classsf_1_1RenderWindow.html | 2116 +++++++++++++++++ SFML/doc/html/classsf_1_1RenderWindow.png | Bin 0 -> 1416 bytes SFML/doc/html/classsf_1_1Sensor-members.html | 72 + SFML/doc/html/classsf_1_1Sensor.html | 262 ++ SFML/doc/html/classsf_1_1Shader-members.html | 118 + SFML/doc/html/classsf_1_1Shader.html | 2092 ++++++++++++++++ SFML/doc/html/classsf_1_1Shader.png | Bin 0 -> 748 bytes SFML/doc/html/classsf_1_1Shape-members.html | 99 + SFML/doc/html/classsf_1_1Shape.html | 1328 +++++++++++ SFML/doc/html/classsf_1_1Shape.png | Bin 0 -> 1486 bytes SFML/doc/html/classsf_1_1Socket-members.html | 82 + SFML/doc/html/classsf_1_1Socket.html | 476 ++++ SFML/doc/html/classsf_1_1Socket.png | Bin 0 -> 1245 bytes .../classsf_1_1SocketSelector-members.html | 70 + SFML/doc/html/classsf_1_1SocketSelector.html | 346 +++ SFML/doc/html/classsf_1_1Sound-members.html | 99 + SFML/doc/html/classsf_1_1Sound.html | 1123 +++++++++ SFML/doc/html/classsf_1_1Sound.png | Bin 0 -> 691 bytes .../html/classsf_1_1SoundBuffer-members.html | 78 + SFML/doc/html/classsf_1_1SoundBuffer.html | 524 ++++ SFML/doc/html/classsf_1_1SoundBuffer.png | Bin 0 -> 509 bytes ...lasssf_1_1SoundBufferRecorder-members.html | 79 + .../html/classsf_1_1SoundBufferRecorder.html | 645 +++++ .../html/classsf_1_1SoundBufferRecorder.png | Bin 0 -> 903 bytes .../classsf_1_1SoundFileFactory-members.html | 69 + .../doc/html/classsf_1_1SoundFileFactory.html | 389 +++ .../classsf_1_1SoundFileReader-members.html | 65 + SFML/doc/html/classsf_1_1SoundFileReader.html | 259 ++ .../classsf_1_1SoundFileWriter-members.html | 64 + SFML/doc/html/classsf_1_1SoundFileWriter.html | 219 ++ .../classsf_1_1SoundRecorder-members.html | 79 + SFML/doc/html/classsf_1_1SoundRecorder.html | 618 +++++ SFML/doc/html/classsf_1_1SoundRecorder.png | Bin 0 -> 906 bytes .../html/classsf_1_1SoundSource-members.html | 89 + SFML/doc/html/classsf_1_1SoundSource.html | 804 +++++++ SFML/doc/html/classsf_1_1SoundSource.png | Bin 0 -> 1194 bytes .../html/classsf_1_1SoundStream-members.html | 100 + SFML/doc/html/classsf_1_1SoundStream.html | 1227 ++++++++++ SFML/doc/html/classsf_1_1SoundStream.png | Bin 0 -> 926 bytes SFML/doc/html/classsf_1_1Sprite-members.html | 93 + SFML/doc/html/classsf_1_1Sprite.html | 1133 +++++++++ SFML/doc/html/classsf_1_1Sprite.png | Bin 0 -> 734 bytes SFML/doc/html/classsf_1_1String-members.html | 112 + SFML/doc/html/classsf_1_1String.html | 1789 ++++++++++++++ .../html/classsf_1_1TcpListener-members.html | 83 + SFML/doc/html/classsf_1_1TcpListener.html | 547 +++++ SFML/doc/html/classsf_1_1TcpListener.png | Bin 0 -> 715 bytes .../html/classsf_1_1TcpSocket-members.html | 91 + SFML/doc/html/classsf_1_1TcpSocket.html | 819 +++++++ SFML/doc/html/classsf_1_1TcpSocket.png | Bin 0 -> 722 bytes SFML/doc/html/classsf_1_1Text-members.html | 113 + SFML/doc/html/classsf_1_1Text.html | 1557 ++++++++++++ SFML/doc/html/classsf_1_1Text.png | Bin 0 -> 710 bytes SFML/doc/html/classsf_1_1Texture-members.html | 100 + SFML/doc/html/classsf_1_1Texture.html | 1201 ++++++++++ SFML/doc/html/classsf_1_1Texture.png | Bin 0 -> 475 bytes SFML/doc/html/classsf_1_1Thread-members.html | 70 + SFML/doc/html/classsf_1_1Thread.html | 316 +++ SFML/doc/html/classsf_1_1Thread.png | Bin 0 -> 501 bytes .../html/classsf_1_1ThreadLocal-members.html | 67 + SFML/doc/html/classsf_1_1ThreadLocal.html | 194 ++ SFML/doc/html/classsf_1_1ThreadLocal.png | Bin 0 -> 878 bytes .../classsf_1_1ThreadLocalPtr-members.html | 71 + SFML/doc/html/classsf_1_1ThreadLocalPtr.html | 277 +++ SFML/doc/html/classsf_1_1ThreadLocalPtr.png | Bin 0 -> 597 bytes SFML/doc/html/classsf_1_1Time-members.html | 96 + SFML/doc/html/classsf_1_1Time.html | 1516 ++++++++++++ SFML/doc/html/classsf_1_1Touch-members.html | 64 + SFML/doc/html/classsf_1_1Touch.html | 211 ++ .../html/classsf_1_1Transform-members.html | 84 + SFML/doc/html/classsf_1_1Transform.html | 1038 ++++++++ .../classsf_1_1Transformable-members.html | 81 + SFML/doc/html/classsf_1_1Transformable.html | 723 ++++++ SFML/doc/html/classsf_1_1Transformable.png | Bin 0 -> 1671 bytes .../html/classsf_1_1UdpSocket-members.html | 88 + SFML/doc/html/classsf_1_1UdpSocket.html | 793 ++++++ SFML/doc/html/classsf_1_1UdpSocket.png | Bin 0 -> 723 bytes SFML/doc/html/classsf_1_1Utf.html | 80 + .../classsf_1_1Utf_3_0116_01_4-members.html | 74 + SFML/doc/html/classsf_1_1Utf_3_0116_01_4.html | 883 +++++++ .../classsf_1_1Utf_3_0132_01_4-members.html | 78 + SFML/doc/html/classsf_1_1Utf_3_0132_01_4.html | 1105 +++++++++ .../classsf_1_1Utf_3_018_01_4-members.html | 74 + SFML/doc/html/classsf_1_1Utf_3_018_01_4.html | 883 +++++++ SFML/doc/html/classsf_1_1Vector2-members.html | 78 + SFML/doc/html/classsf_1_1Vector2.html | 878 +++++++ SFML/doc/html/classsf_1_1Vector3-members.html | 79 + SFML/doc/html/classsf_1_1Vector3.html | 907 +++++++ SFML/doc/html/classsf_1_1Vertex-members.html | 69 + SFML/doc/html/classsf_1_1Vertex.html | 333 +++ .../html/classsf_1_1VertexArray-members.html | 73 + SFML/doc/html/classsf_1_1VertexArray.html | 413 ++++ SFML/doc/html/classsf_1_1VertexArray.png | Bin 0 -> 512 bytes .../html/classsf_1_1VertexBuffer-members.html | 89 + SFML/doc/html/classsf_1_1VertexBuffer.html | 772 ++++++ SFML/doc/html/classsf_1_1VertexBuffer.png | Bin 0 -> 753 bytes .../html/classsf_1_1VideoMode-members.html | 75 + SFML/doc/html/classsf_1_1VideoMode.html | 615 +++++ SFML/doc/html/classsf_1_1View-members.html | 81 + SFML/doc/html/classsf_1_1View.html | 703 ++++++ SFML/doc/html/classsf_1_1Window-members.html | 98 + SFML/doc/html/classsf_1_1Window.html | 1130 +++++++++ SFML/doc/html/classsf_1_1Window.png | Bin 0 -> 1018 bytes SFML/doc/html/closed.png | Bin 0 -> 132 bytes SFML/doc/html/deprecated.html | 94 + .../dir_5cf786e58cbf7297a26339ae6e44357c.html | 56 + .../dir_83d50c0b1f1eceb6f182949162e90861.html | 56 + .../dir_89e9fb32471ae291b179a889144513db.html | 56 + .../dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html | 66 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 60 + .../dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html | 56 + .../dir_e68e8157741866f444e17edd764ebbae.html | 56 + .../dir_e71ec51a9abd604c65f6abb639f6ea75.html | 56 + SFML/doc/html/doc.png | Bin 0 -> 746 bytes SFML/doc/html/doxygen.css | 1450 +++++++++++ SFML/doc/html/doxygen.png | Bin 0 -> 3779 bytes SFML/doc/html/dynsections.js | 127 + SFML/doc/html/files.html | 155 ++ SFML/doc/html/folderclosed.png | Bin 0 -> 616 bytes SFML/doc/html/folderopen.png | Bin 0 -> 597 bytes SFML/doc/html/functions.html | 182 ++ SFML/doc/html/functions_0x7e.html | 213 ++ SFML/doc/html/functions_b.html | 170 ++ SFML/doc/html/functions_c.html | 257 ++ SFML/doc/html/functions_d.html | 191 ++ SFML/doc/html/functions_e.html | 146 ++ SFML/doc/html/functions_enum.html | 114 + SFML/doc/html/functions_eval.html | 123 + SFML/doc/html/functions_eval_b.html | 129 + SFML/doc/html/functions_eval_c.html | 137 ++ SFML/doc/html/functions_eval_d.html | 147 ++ SFML/doc/html/functions_eval_e.html | 119 + SFML/doc/html/functions_eval_f.html | 164 ++ SFML/doc/html/functions_eval_g.html | 116 + SFML/doc/html/functions_eval_h.html | 119 + SFML/doc/html/functions_eval_i.html | 117 + SFML/doc/html/functions_eval_j.html | 113 + SFML/doc/html/functions_eval_k.html | 107 + SFML/doc/html/functions_eval_l.html | 126 + SFML/doc/html/functions_eval_m.html | 143 ++ SFML/doc/html/functions_eval_n.html | 200 ++ SFML/doc/html/functions_eval_o.html | 123 + SFML/doc/html/functions_eval_p.html | 149 ++ SFML/doc/html/functions_eval_q.html | 101 + SFML/doc/html/functions_eval_r.html | 139 ++ SFML/doc/html/functions_eval_s.html | 168 ++ SFML/doc/html/functions_eval_t.html | 125 + SFML/doc/html/functions_eval_u.html | 117 + SFML/doc/html/functions_eval_v.html | 108 + SFML/doc/html/functions_eval_w.html | 101 + SFML/doc/html/functions_eval_x.html | 105 + SFML/doc/html/functions_eval_y.html | 99 + SFML/doc/html/functions_eval_z.html | 102 + SFML/doc/html/functions_f.html | 216 ++ SFML/doc/html/functions_func.html | 114 + SFML/doc/html/functions_func_0x7e.html | 209 ++ SFML/doc/html/functions_func_b.html | 104 + SFML/doc/html/functions_func_c.html | 178 ++ SFML/doc/html/functions_func_d.html | 127 + SFML/doc/html/functions_func_e.html | 112 + SFML/doc/html/functions_func_f.html | 134 ++ SFML/doc/html/functions_func_g.html | 452 ++++ SFML/doc/html/functions_func_h.html | 101 + SFML/doc/html/functions_func_i.html | 168 ++ SFML/doc/html/functions_func_k.html | 95 + SFML/doc/html/functions_func_l.html | 143 ++ SFML/doc/html/functions_func_m.html | 117 + SFML/doc/html/functions_func_n.html | 100 + SFML/doc/html/functions_func_o.html | 287 +++ SFML/doc/html/functions_func_p.html | 117 + SFML/doc/html/functions_func_r.html | 169 ++ SFML/doc/html/functions_func_s.html | 400 ++++ SFML/doc/html/functions_func_t.html | 188 ++ SFML/doc/html/functions_func_u.html | 116 + SFML/doc/html/functions_func_v.html | 113 + SFML/doc/html/functions_func_w.html | 106 + SFML/doc/html/functions_func_z.html | 95 + SFML/doc/html/functions_g.html | 483 ++++ SFML/doc/html/functions_h.html | 134 ++ SFML/doc/html/functions_i.html | 203 ++ SFML/doc/html/functions_j.html | 128 + SFML/doc/html/functions_k.html | 117 + SFML/doc/html/functions_l.html | 187 ++ SFML/doc/html/functions_m.html | 196 ++ SFML/doc/html/functions_n.html | 215 ++ SFML/doc/html/functions_o.html | 323 +++ SFML/doc/html/functions_p.html | 182 ++ SFML/doc/html/functions_q.html | 102 + SFML/doc/html/functions_r.html | 223 ++ SFML/doc/html/functions_rela.html | 66 + SFML/doc/html/functions_s.html | 517 ++++ SFML/doc/html/functions_t.html | 261 ++ SFML/doc/html/functions_type.html | 69 + SFML/doc/html/functions_u.html | 148 ++ SFML/doc/html/functions_v.html | 131 + SFML/doc/html/functions_vars.html | 478 ++++ SFML/doc/html/functions_w.html | 130 + SFML/doc/html/functions_x.html | 118 + SFML/doc/html/functions_y.html | 115 + SFML/doc/html/functions_z.html | 113 + SFML/doc/html/globals.html | 59 + SFML/doc/html/globals_defs.html | 59 + SFML/doc/html/group__audio.html | 99 + SFML/doc/html/group__graphics.html | 202 ++ SFML/doc/html/group__network.html | 84 + SFML/doc/html/group__system.html | 192 ++ SFML/doc/html/group__window.html | 187 ++ SFML/doc/html/hierarchy.html | 175 ++ SFML/doc/html/index.html | 53 + SFML/doc/html/jquery.js | 115 + SFML/doc/html/mainpage_8hpp_source.html | 56 + SFML/doc/html/menudata.js | 149 ++ SFML/doc/html/modules.html | 55 + SFML/doc/html/namespacemembers.html | 89 + SFML/doc/html/namespacemembers_type.html | 89 + SFML/doc/html/namespaces.html | 58 + SFML/doc/html/namespacesf_1_1Glsl.html | 304 +++ SFML/doc/html/nav_f.png | Bin 0 -> 153 bytes SFML/doc/html/nav_g.png | Bin 0 -> 95 bytes SFML/doc/html/nav_h.png | Bin 0 -> 98 bytes SFML/doc/html/open.png | Bin 0 -> 123 bytes SFML/doc/html/pages.html | 51 + SFML/doc/html/splitbar.png | Bin 0 -> 314 bytes .../html/structsf_1_1BlendMode-members.html | 87 + SFML/doc/html/structsf_1_1BlendMode.html | 565 +++++ .../structsf_1_1ContextSettings-members.html | 73 + .../doc/html/structsf_1_1ContextSettings.html | 361 +++ ...1Event_1_1JoystickButtonEvent-members.html | 63 + ...uctsf_1_1Event_1_1JoystickButtonEvent.html | 120 + ...Event_1_1JoystickConnectEvent-members.html | 62 + ...ctsf_1_1Event_1_1JoystickConnectEvent.html | 99 + ...1_1Event_1_1JoystickMoveEvent-members.html | 64 + ...tructsf_1_1Event_1_1JoystickMoveEvent.html | 141 ++ ...structsf_1_1Event_1_1KeyEvent-members.html | 66 + .../html/structsf_1_1Event_1_1KeyEvent.html | 183 ++ ..._1_1Event_1_1MouseButtonEvent-members.html | 64 + ...structsf_1_1Event_1_1MouseButtonEvent.html | 141 ++ ...sf_1_1Event_1_1MouseMoveEvent-members.html | 63 + .../structsf_1_1Event_1_1MouseMoveEvent.html | 120 + ...f_1_1Event_1_1MouseWheelEvent-members.html | 64 + .../structsf_1_1Event_1_1MouseWheelEvent.html | 142 ++ ...vent_1_1MouseWheelScrollEvent-members.html | 65 + ...tsf_1_1Event_1_1MouseWheelScrollEvent.html | 162 ++ ...uctsf_1_1Event_1_1SensorEvent-members.html | 65 + .../structsf_1_1Event_1_1SensorEvent.html | 162 ++ ...tructsf_1_1Event_1_1SizeEvent-members.html | 63 + .../html/structsf_1_1Event_1_1SizeEvent.html | 120 + ...tructsf_1_1Event_1_1TextEvent-members.html | 62 + .../html/structsf_1_1Event_1_1TextEvent.html | 99 + ...ructsf_1_1Event_1_1TouchEvent-members.html | 64 + .../html/structsf_1_1Event_1_1TouchEvent.html | 141 ++ .../structsf_1_1Font_1_1Info-members.html | 62 + SFML/doc/html/structsf_1_1Font_1_1Info.html | 99 + ...1_1Joystick_1_1Identification-members.html | 65 + ...tructsf_1_1Joystick_1_1Identification.html | 141 ++ .../structsf_1_1Music_1_1Span-members.html | 65 + SFML/doc/html/structsf_1_1Music_1_1Span.html | 218 ++ ...uctsf_1_1Shader_1_1CurrentTextureType.html | 71 + ...sf_1_1SoundFileReader_1_1Info-members.html | 64 + .../structsf_1_1SoundFileReader_1_1Info.html | 141 ++ ...uctsf_1_1SoundStream_1_1Chunk-members.html | 63 + .../structsf_1_1SoundStream_1_1Chunk.html | 120 + SFML/doc/html/sync_off.png | Bin 0 -> 853 bytes SFML/doc/html/sync_on.png | Bin 0 -> 845 bytes SFML/doc/html/tab_a.png | Bin 0 -> 142 bytes SFML/doc/html/tab_b.png | Bin 0 -> 169 bytes SFML/doc/html/tab_h.png | Bin 0 -> 177 bytes SFML/doc/html/tab_s.png | Bin 0 -> 184 bytes SFML/doc/html/tabs.css | 61 + SFML/examples/ftp/Ftp.cpp | 206 ++ SFML/examples/ftp/ftp.exe | Bin 0 -> 66048 bytes SFML/examples/island/Island.cpp | 590 +++++ SFML/examples/island/island.exe | Bin 0 -> 591872 bytes SFML/examples/island/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/island/resources/terrain.frag | 11 + SFML/examples/island/resources/terrain.vert | 8 + SFML/examples/joystick/Joystick.cpp | 238 ++ SFML/examples/joystick/joystick.exe | Bin 0 -> 581632 bytes .../examples/joystick/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/opengl/OpenGL.cpp | 258 ++ SFML/examples/opengl/opengl.exe | Bin 0 -> 623104 bytes SFML/examples/opengl/resources/background.jpg | Bin 0 -> 142959 bytes SFML/examples/opengl/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/opengl/resources/texture.jpg | Bin 0 -> 20550 bytes SFML/examples/pong/Pong.cpp | 242 ++ SFML/examples/pong/pong.exe | Bin 0 -> 1429504 bytes SFML/examples/pong/resources/ball.wav | Bin 0 -> 15442 bytes SFML/examples/pong/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/shader/Effect.hpp | 88 + SFML/examples/shader/Shader.cpp | 460 ++++ SFML/examples/shader/resources/background.jpg | Bin 0 -> 53507 bytes SFML/examples/shader/resources/billboard.frag | 11 + SFML/examples/shader/resources/billboard.geom | 56 + SFML/examples/shader/resources/billboard.vert | 5 + SFML/examples/shader/resources/blink.frag | 9 + SFML/examples/shader/resources/blur.frag | 20 + SFML/examples/shader/resources/devices.png | Bin 0 -> 51410 bytes SFML/examples/shader/resources/edge.frag | 32 + SFML/examples/shader/resources/logo.png | Bin 0 -> 8849 bytes SFML/examples/shader/resources/pixelate.frag | 9 + SFML/examples/shader/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/shader/resources/sfml.png | Bin 0 -> 25973 bytes SFML/examples/shader/resources/storm.vert | 19 + .../shader/resources/text-background.png | Bin 0 -> 745 bytes SFML/examples/shader/resources/wave.vert | 15 + SFML/examples/shader/shader.exe | Bin 0 -> 667136 bytes SFML/examples/sockets/Sockets.cpp | 59 + SFML/examples/sockets/TCP.cpp | 81 + SFML/examples/sockets/UDP.cpp | 72 + SFML/examples/sockets/sockets.exe | Bin 0 -> 33280 bytes SFML/examples/sound-capture/SoundCapture.cpp | 94 + SFML/examples/sound-capture/sound-capture.exe | Bin 0 -> 892928 bytes SFML/examples/sound/Sound.cpp | 101 + SFML/examples/sound/resources/canary.wav | Bin 0 -> 63504 bytes SFML/examples/sound/resources/ding.flac | Bin 0 -> 61764 bytes SFML/examples/sound/resources/orchestral.ogg | Bin 0 -> 153776 bytes SFML/examples/sound/sound.exe | Bin 0 -> 893952 bytes SFML/examples/voip/Client.cpp | 141 ++ SFML/examples/voip/Server.cpp | 200 ++ SFML/examples/voip/VoIP.cpp | 50 + SFML/examples/voip/voip.exe | Bin 0 -> 48640 bytes SFML/examples/win32/Win32.cpp | 132 + SFML/examples/win32/resources/image1.jpg | Bin 0 -> 25996 bytes SFML/examples/win32/resources/image2.jpg | Bin 0 -> 25527 bytes SFML/examples/win32/win32.exe | Bin 0 -> 178688 bytes SFML/examples/window/Window.cpp | 146 ++ SFML/examples/window/window.exe | Bin 0 -> 95232 bytes SFML/include/SFML/Audio.hpp | 56 + SFML/include/SFML/Audio/AlResource.hpp | 70 + SFML/include/SFML/Audio/Export.hpp | 48 + SFML/include/SFML/Audio/InputSoundFile.hpp | 263 ++ SFML/include/SFML/Audio/Listener.hpp | 234 ++ SFML/include/SFML/Audio/Music.hpp | 337 +++ SFML/include/SFML/Audio/OutputSoundFile.hpp | 133 ++ SFML/include/SFML/Audio/Sound.hpp | 264 ++ SFML/include/SFML/Audio/SoundBuffer.hpp | 352 +++ .../SFML/Audio/SoundBufferRecorder.hpp | 144 ++ SFML/include/SFML/Audio/SoundFileFactory.hpp | 197 ++ SFML/include/SFML/Audio/SoundFileFactory.inl | 100 + SFML/include/SFML/Audio/SoundFileReader.hpp | 165 ++ SFML/include/SFML/Audio/SoundFileWriter.hpp | 125 + SFML/include/SFML/Audio/SoundRecorder.hpp | 408 ++++ SFML/include/SFML/Audio/SoundSource.hpp | 332 +++ SFML/include/SFML/Audio/SoundStream.hpp | 405 ++++ SFML/include/SFML/Config.hpp | 236 ++ SFML/include/SFML/GpuPreference.hpp | 74 + SFML/include/SFML/Graphics.hpp | 68 + SFML/include/SFML/Graphics/BlendMode.hpp | 215 ++ SFML/include/SFML/Graphics/CircleShape.hpp | 154 ++ SFML/include/SFML/Graphics/Color.hpp | 275 +++ SFML/include/SFML/Graphics/ConvexShape.hpp | 153 ++ SFML/include/SFML/Graphics/Drawable.hpp | 126 + SFML/include/SFML/Graphics/Export.hpp | 48 + SFML/include/SFML/Graphics/Font.hpp | 439 ++++ SFML/include/SFML/Graphics/Glsl.hpp | 227 ++ SFML/include/SFML/Graphics/Glsl.inl | 155 ++ SFML/include/SFML/Graphics/Glyph.hpp | 79 + SFML/include/SFML/Graphics/Image.hpp | 324 +++ SFML/include/SFML/Graphics/PrimitiveType.hpp | 58 + SFML/include/SFML/Graphics/Rect.hpp | 254 ++ SFML/include/SFML/Graphics/Rect.inl | 159 ++ SFML/include/SFML/Graphics/RectangleShape.hpp | 132 + SFML/include/SFML/Graphics/RenderStates.hpp | 174 ++ SFML/include/SFML/Graphics/RenderTarget.hpp | 510 ++++ SFML/include/SFML/Graphics/RenderTexture.hpp | 314 +++ SFML/include/SFML/Graphics/RenderWindow.hpp | 284 +++ SFML/include/SFML/Graphics/Shader.hpp | 875 +++++++ SFML/include/SFML/Graphics/Shape.hpp | 355 +++ SFML/include/SFML/Graphics/Sprite.hpp | 279 +++ SFML/include/SFML/Graphics/Text.hpp | 513 ++++ SFML/include/SFML/Graphics/Texture.hpp | 733 ++++++ SFML/include/SFML/Graphics/Transform.hpp | 479 ++++ SFML/include/SFML/Graphics/Transformable.hpp | 429 ++++ SFML/include/SFML/Graphics/Vertex.hpp | 148 ++ SFML/include/SFML/Graphics/VertexArray.hpp | 223 ++ SFML/include/SFML/Graphics/VertexBuffer.hpp | 408 ++++ SFML/include/SFML/Graphics/View.hpp | 343 +++ SFML/include/SFML/Main.hpp | 43 + SFML/include/SFML/Network.hpp | 53 + SFML/include/SFML/Network/Export.hpp | 48 + SFML/include/SFML/Network/Ftp.hpp | 616 +++++ SFML/include/SFML/Network/Http.hpp | 482 ++++ SFML/include/SFML/Network/IpAddress.hpp | 328 +++ SFML/include/SFML/Network/Packet.hpp | 532 +++++ SFML/include/SFML/Network/Socket.hpp | 219 ++ SFML/include/SFML/Network/SocketHandle.hpp | 57 + SFML/include/SFML/Network/SocketSelector.hpp | 263 ++ SFML/include/SFML/Network/TcpListener.hpp | 166 ++ SFML/include/SFML/Network/TcpSocket.hpp | 316 +++ SFML/include/SFML/Network/UdpSocket.hpp | 291 +++ SFML/include/SFML/OpenGL.hpp | 78 + SFML/include/SFML/System.hpp | 60 + SFML/include/SFML/System/Clock.hpp | 117 + SFML/include/SFML/System/Err.hpp | 80 + SFML/include/SFML/System/Export.hpp | 48 + SFML/include/SFML/System/FileInputStream.hpp | 169 ++ SFML/include/SFML/System/InputStream.hpp | 152 ++ SFML/include/SFML/System/Lock.hpp | 139 ++ .../include/SFML/System/MemoryInputStream.hpp | 148 ++ SFML/include/SFML/System/Mutex.hpp | 148 ++ SFML/include/SFML/System/NativeActivity.hpp | 62 + SFML/include/SFML/System/NonCopyable.hpp | 129 + SFML/include/SFML/System/Sleep.hpp | 52 + SFML/include/SFML/System/String.hpp | 669 ++++++ SFML/include/SFML/System/String.inl | 53 + SFML/include/SFML/System/Thread.hpp | 282 +++ SFML/include/SFML/System/Thread.inl | 90 + SFML/include/SFML/System/ThreadLocal.hpp | 103 + SFML/include/SFML/System/ThreadLocalPtr.hpp | 158 ++ SFML/include/SFML/System/ThreadLocalPtr.inl | 77 + SFML/include/SFML/System/Time.hpp | 488 ++++ SFML/include/SFML/System/Utf.hpp | 763 ++++++ SFML/include/SFML/System/Utf.inl | 752 ++++++ SFML/include/SFML/System/Vector2.hpp | 301 +++ SFML/include/SFML/System/Vector2.inl | 161 ++ SFML/include/SFML/System/Vector3.hpp | 302 +++ SFML/include/SFML/System/Vector3.inl | 168 ++ SFML/include/SFML/Window.hpp | 58 + SFML/include/SFML/Window/Clipboard.hpp | 119 + SFML/include/SFML/Window/Context.hpp | 195 ++ SFML/include/SFML/Window/ContextSettings.hpp | 149 ++ SFML/include/SFML/Window/Cursor.hpp | 222 ++ SFML/include/SFML/Window/Event.hpp | 284 +++ SFML/include/SFML/Window/Export.hpp | 48 + SFML/include/SFML/Window/GlResource.hpp | 109 + SFML/include/SFML/Window/Joystick.hpp | 227 ++ SFML/include/SFML/Window/Keyboard.hpp | 232 ++ SFML/include/SFML/Window/Mouse.hpp | 177 ++ SFML/include/SFML/Window/Sensor.hpp | 150 ++ SFML/include/SFML/Window/Touch.hpp | 137 ++ SFML/include/SFML/Window/VideoMode.hpp | 228 ++ SFML/include/SFML/Window/Window.hpp | 622 +++++ SFML/include/SFML/Window/WindowHandle.hpp | 101 + SFML/include/SFML/Window/WindowStyle.hpp | 53 + SFML/lib/cmake/SFML/SFMLConfig.cmake | 148 ++ .../cmake/SFML/SFMLConfigDependencies.cmake | 86 + SFML/lib/cmake/SFML/SFMLConfigVersion.cmake | 46 + .../cmake/SFML/SFMLSharedTargets-debug.cmake | 69 + .../SFML/SFMLSharedTargets-release.cmake | 69 + SFML/lib/cmake/SFML/SFMLSharedTargets.cmake | 160 ++ .../cmake/SFML/SFMLStaticTargets-debug.cmake | 69 + .../SFML/SFMLStaticTargets-release.cmake | 69 + SFML/lib/cmake/SFML/SFMLStaticTargets.cmake | 167 ++ SFML/lib/flac.lib | Bin 0 -> 512458 bytes SFML/lib/freetype.lib | Bin 0 -> 858580 bytes SFML/lib/ogg.lib | Bin 0 -> 22794 bytes SFML/lib/openal32.lib | Bin 0 -> 34440 bytes SFML/lib/sfml-audio-d.lib | Bin 0 -> 59372 bytes SFML/lib/sfml-audio-d.pdb | Bin 0 -> 2486272 bytes SFML/lib/sfml-audio-s-d.lib | Bin 0 -> 3367878 bytes SFML/lib/sfml-audio-s-d.pdb | Bin 0 -> 1175552 bytes SFML/lib/sfml-audio-s.lib | Bin 0 -> 1217000 bytes SFML/lib/sfml-audio.lib | Bin 0 -> 59012 bytes SFML/lib/sfml-graphics-d.lib | Bin 0 -> 164820 bytes SFML/lib/sfml-graphics-d.pdb | Bin 0 -> 4288512 bytes SFML/lib/sfml-graphics-s-d.lib | Bin 0 -> 5933526 bytes SFML/lib/sfml-graphics-s-d.pdb | Bin 0 -> 1568768 bytes SFML/lib/sfml-graphics-s.lib | Bin 0 -> 2430178 bytes SFML/lib/sfml-graphics.lib | Bin 0 -> 163864 bytes SFML/lib/sfml-main-d.lib | Bin 0 -> 19320 bytes SFML/lib/sfml-main-s-d.pdb | Bin 0 -> 126976 bytes SFML/lib/sfml-main.lib | Bin 0 -> 1306 bytes SFML/lib/sfml-network-d.lib | Bin 0 -> 72806 bytes SFML/lib/sfml-network-d.pdb | Bin 0 -> 2289664 bytes SFML/lib/sfml-network-s-d.lib | Bin 0 -> 2942654 bytes SFML/lib/sfml-network-s-d.pdb | Bin 0 -> 978944 bytes SFML/lib/sfml-network-s.lib | Bin 0 -> 1157334 bytes SFML/lib/sfml-network.lib | Bin 0 -> 72396 bytes SFML/lib/sfml-system-d.lib | Bin 0 -> 42074 bytes SFML/lib/sfml-system-d.pdb | Bin 0 -> 1667072 bytes SFML/lib/sfml-system-s-d.lib | Bin 0 -> 1097046 bytes SFML/lib/sfml-system-s-d.pdb | Bin 0 -> 749568 bytes SFML/lib/sfml-system-s.lib | Bin 0 -> 391334 bytes SFML/lib/sfml-system.lib | Bin 0 -> 41790 bytes SFML/lib/sfml-window-d.lib | Bin 0 -> 36906 bytes SFML/lib/sfml-window-d.pdb | Bin 0 -> 2338816 bytes SFML/lib/sfml-window-s-d.lib | Bin 0 -> 3203886 bytes SFML/lib/sfml-window-s-d.pdb | Bin 0 -> 1265664 bytes SFML/lib/sfml-window-s.lib | Bin 0 -> 1132996 bytes SFML/lib/sfml-window.lib | Bin 0 -> 36666 bytes SFML/lib/vorbis.lib | Bin 0 -> 852828 bytes SFML/lib/vorbisenc.lib | Bin 0 -> 643788 bytes SFML/lib/vorbisfile.lib | Bin 0 -> 34544 bytes SFML/license.md | 20 + SFML/readme.md | 39 + Server.cpp | 3 +- Server.h | 8 +- Shooter.cpp | 48 +- Shooter.h | 4 +- main.cpp => Source.cpp | 2 +- engine/Camera.cpp | 12 +- engine/Camera.h | 0 engine/Consts.h | 12 + engine/Engine.cpp | 9 +- engine/Engine.h | 0 engine/Mesh.cpp | 0 engine/Mesh.h | 0 engine/Object.cpp | 0 engine/Object.h | 1 + engine/Plane.cpp | 0 engine/Plane.h | 0 engine/ResourceManager.cpp | 0 engine/ResourceManager.h | 0 engine/Screen.cpp | 8 +- engine/Screen.h | 2 +- engine/Triangle.cpp | 0 engine/Triangle.h | 0 engine/World.cpp | 30 +- engine/World.h | 7 +- engine/animation/AColor.h | 2 +- engine/animation/AFunction.h | 2 +- engine/animation/ARotate.h | 2 +- engine/animation/AScale.h | 0 engine/animation/ATranslate.h | 2 +- engine/animation/ATranslateToPoint.h | 2 +- engine/animation/AWait.h | 2 +- engine/animation/Animation.cpp | 12 +- engine/animation/Animation.h | 8 +- engine/animation/Interpolation.h | 6 +- engine/fonts/Roboto-Light.ttf | Bin engine/fonts/Roboto-Medium.ttf | Bin engine/fonts/Roboto-Thin.ttf | Bin engine/fonts/fontRU.ttf | Bin engine/gui/Button.cpp | 8 +- engine/gui/Button.h | 0 engine/gui/Window.cpp | 10 +- engine/gui/Window.h | 4 +- engine/network/ClientUDP.cpp | 2 +- engine/network/ClientUDP.h | 0 engine/network/MsgType.cpp | 0 engine/network/MsgType.h | 0 engine/network/ReliableMsg.cpp | 4 +- engine/network/ReliableMsg.h | 0 engine/network/ServerUDP.cpp | 4 +- engine/network/ServerUDP.h | 4 +- engine/network/UDPConnection.cpp | 2 +- engine/network/UDPConnection.h | 0 engine/network/UDPSocket.cpp | 2 +- engine/network/UDPSocket.h | 0 engine/network/config.h | 0 engine/network/connect.txt | 0 engine/network/server.txt | 0 engine/physics/RigidBody.cpp | 0 engine/physics/RigidBody.h | 2 +- engine/physics/Simplex.h | 0 engine/physics/Solver.cpp | 2 +- engine/physics/Solver.h | 0 engine/utils/Log.cpp | 9 +- engine/utils/Log.h | 0 engine/utils/Matrix4x4.cpp | 6 +- engine/utils/Matrix4x4.h | 0 engine/utils/Point4D.cpp | 0 engine/utils/Point4D.h | 0 engine/utils/Time.cpp | 0 engine/utils/Time.h | 0 img/gamePlay2.png | Bin img/gamePlay3.png | Bin img/gamePlay4.png | Bin img/gamePlay5.png | Bin img/gamePlay6.png | Bin img/gamePlay7.png | Bin maps/map1.obj | 0 maps/materials.txt | 0 obj/ability.obj | 0 obj/ability_mat.txt | 0 obj/ak47.obj | 0 obj/ak47_mat.txt | 0 obj/cube.obj | 0 obj/gold_ak47.obj | 0 obj/gold_ak47_mat.txt | 0 obj/gun.obj | 0 obj/gun_mat.txt | 0 obj/hill.obj | 0 obj/hill_mat.txt | 0 obj/rifle.obj | 0 obj/rifle_mat.txt | 0 obj/shotgun.obj | 0 obj/shotgun_mat.txt | 0 openal32.dll | Bin 0 -> 630784 bytes sfml-audio-2.dll | Bin 0 -> 911872 bytes sfml-audio-d-2.dll | Bin 0 -> 1372672 bytes sfml-graphics-2.dll | Bin 0 -> 667648 bytes sfml-graphics-d-2.dll | Bin 0 -> 1435136 bytes sfml-network-2.dll | Bin 0 -> 106496 bytes sfml-network-d-2.dll | Bin 0 -> 330752 bytes sfml-system-2.dll | Bin 0 -> 43008 bytes sfml-system-d-2.dll | Bin 0 -> 188928 bytes sfml-window-2.dll | Bin 0 -> 99840 bytes sfml-window-d-2.dll | Bin 0 -> 339968 bytes shooter.sln | 31 + shooter.vcxproj | 266 +++ shooter.vcxproj.filters | 295 +++ sound/backNoise.ogg | Bin sound/classic_hurt.ogg | Bin sound/click.ogg | Bin sound/fallbig.ogg | Bin sound/fullAbility.ogg | Bin sound/fullHealth.ogg | Bin sound/kill.ogg | Bin sound/slow_mo.ogg | Bin sound/stonestep1.ogg | Bin sound/stonestep2.ogg | Bin sound/stonestep3.ogg | Bin sound/stonestep4.ogg | Bin sound/stonestep5.ogg | Bin sound/stonestep6.ogg | Bin sound/unslow_mo.ogg | Bin sound/weapons/ak47.ogg | Bin sound/weapons/change_weapon.ogg | Bin sound/weapons/gun.ogg | Bin sound/weapons/no_ammo.ogg | Bin sound/weapons/reload_ak47.ogg | Bin sound/weapons/reload_gun.ogg | Bin sound/weapons/reload_shotgun.ogg | Bin sound/weapons/shotgun.ogg | Bin textures/back.png | Bin textures/gui.png | Bin weapon/Ak47.cpp | 8 +- weapon/Ak47.h | 0 weapon/Gold_Ak47.h | 6 +- weapon/Gun.cpp | 8 +- weapon/Gun.h | 0 weapon/Rifle.cpp | 8 +- weapon/Rifle.h | 0 weapon/Shotgun.cpp | 12 +- weapon/Shotgun.h | 0 weapon/Weapon.cpp | 27 +- weapon/Weapon.h | 15 +- 862 files changed, 121424 insertions(+), 222 deletions(-) mode change 100755 => 100644 Bonus.cpp mode change 100755 => 100644 Bonus.h mode change 100755 => 100644 CMakeLists.txt mode change 100755 => 100644 Client.cpp mode change 100755 => 100644 Client.h mode change 100755 => 100644 Player.cpp mode change 100755 => 100644 Player.h mode change 100755 => 100644 README.md create mode 100644 SFML/bin/openal32.dll create mode 100644 SFML/bin/sfml-audio-2.dll create mode 100644 SFML/bin/sfml-audio-d-2.dll create mode 100644 SFML/bin/sfml-graphics-2.dll create mode 100644 SFML/bin/sfml-graphics-d-2.dll create mode 100644 SFML/bin/sfml-network-2.dll create mode 100644 SFML/bin/sfml-network-d-2.dll create mode 100644 SFML/bin/sfml-system-2.dll create mode 100644 SFML/bin/sfml-system-d-2.dll create mode 100644 SFML/bin/sfml-window-2.dll create mode 100644 SFML/bin/sfml-window-d-2.dll create mode 100644 SFML/doc/html/AlResource_8hpp_source.html create mode 100644 SFML/doc/html/Audio_2Export_8hpp_source.html create mode 100644 SFML/doc/html/Audio_8hpp_source.html create mode 100644 SFML/doc/html/BlendMode_8hpp_source.html create mode 100644 SFML/doc/html/CircleShape_8hpp_source.html create mode 100644 SFML/doc/html/Clipboard_8hpp_source.html create mode 100644 SFML/doc/html/Clock_8hpp_source.html create mode 100644 SFML/doc/html/Color_8hpp_source.html create mode 100644 SFML/doc/html/Config_8hpp_source.html create mode 100644 SFML/doc/html/ContextSettings_8hpp_source.html create mode 100644 SFML/doc/html/Context_8hpp_source.html create mode 100644 SFML/doc/html/ConvexShape_8hpp_source.html create mode 100644 SFML/doc/html/Cursor_8hpp_source.html create mode 100644 SFML/doc/html/Drawable_8hpp_source.html create mode 100644 SFML/doc/html/Err_8hpp_source.html create mode 100644 SFML/doc/html/Event_8hpp_source.html create mode 100644 SFML/doc/html/FileInputStream_8hpp_source.html create mode 100644 SFML/doc/html/Font_8hpp_source.html create mode 100644 SFML/doc/html/Ftp_8hpp_source.html create mode 100644 SFML/doc/html/GlResource_8hpp_source.html create mode 100644 SFML/doc/html/Glsl_8hpp_source.html create mode 100644 SFML/doc/html/Glyph_8hpp_source.html create mode 100644 SFML/doc/html/GpuPreference_8hpp.html create mode 100644 SFML/doc/html/GpuPreference_8hpp_source.html create mode 100644 SFML/doc/html/Graphics_2Export_8hpp_source.html create mode 100644 SFML/doc/html/Graphics_8hpp_source.html create mode 100644 SFML/doc/html/Http_8hpp_source.html create mode 100644 SFML/doc/html/Image_8hpp_source.html create mode 100644 SFML/doc/html/InputSoundFile_8hpp_source.html create mode 100644 SFML/doc/html/InputStream_8hpp_source.html create mode 100644 SFML/doc/html/IpAddress_8hpp_source.html create mode 100644 SFML/doc/html/Joystick_8hpp_source.html create mode 100644 SFML/doc/html/Keyboard_8hpp_source.html create mode 100644 SFML/doc/html/Listener_8hpp_source.html create mode 100644 SFML/doc/html/Lock_8hpp_source.html create mode 100644 SFML/doc/html/Main_8hpp_source.html create mode 100644 SFML/doc/html/MemoryInputStream_8hpp_source.html create mode 100644 SFML/doc/html/Mouse_8hpp_source.html create mode 100644 SFML/doc/html/Music_8hpp_source.html create mode 100644 SFML/doc/html/Mutex_8hpp_source.html create mode 100644 SFML/doc/html/NativeActivity_8hpp_source.html create mode 100644 SFML/doc/html/Network_2Export_8hpp_source.html create mode 100644 SFML/doc/html/Network_8hpp_source.html create mode 100644 SFML/doc/html/NonCopyable_8hpp_source.html create mode 100644 SFML/doc/html/OpenGL_8hpp_source.html create mode 100644 SFML/doc/html/OutputSoundFile_8hpp_source.html create mode 100644 SFML/doc/html/Packet_8hpp_source.html create mode 100644 SFML/doc/html/PrimitiveType_8hpp_source.html create mode 100644 SFML/doc/html/Rect_8hpp_source.html create mode 100644 SFML/doc/html/RectangleShape_8hpp_source.html create mode 100644 SFML/doc/html/RenderStates_8hpp_source.html create mode 100644 SFML/doc/html/RenderTarget_8hpp_source.html create mode 100644 SFML/doc/html/RenderTexture_8hpp_source.html create mode 100644 SFML/doc/html/RenderWindow_8hpp_source.html create mode 100644 SFML/doc/html/Sensor_8hpp_source.html create mode 100644 SFML/doc/html/Shader_8hpp_source.html create mode 100644 SFML/doc/html/Shape_8hpp_source.html create mode 100644 SFML/doc/html/Sleep_8hpp_source.html create mode 100644 SFML/doc/html/SocketHandle_8hpp_source.html create mode 100644 SFML/doc/html/SocketSelector_8hpp_source.html create mode 100644 SFML/doc/html/Socket_8hpp_source.html create mode 100644 SFML/doc/html/SoundBufferRecorder_8hpp_source.html create mode 100644 SFML/doc/html/SoundBuffer_8hpp_source.html create mode 100644 SFML/doc/html/SoundFileFactory_8hpp_source.html create mode 100644 SFML/doc/html/SoundFileReader_8hpp_source.html create mode 100644 SFML/doc/html/SoundFileWriter_8hpp_source.html create mode 100644 SFML/doc/html/SoundRecorder_8hpp_source.html create mode 100644 SFML/doc/html/SoundSource_8hpp_source.html create mode 100644 SFML/doc/html/SoundStream_8hpp_source.html create mode 100644 SFML/doc/html/Sound_8hpp_source.html create mode 100644 SFML/doc/html/Sprite_8hpp_source.html create mode 100644 SFML/doc/html/String_8hpp_source.html create mode 100644 SFML/doc/html/System_2Export_8hpp_source.html create mode 100644 SFML/doc/html/System_8hpp_source.html create mode 100644 SFML/doc/html/TcpListener_8hpp_source.html create mode 100644 SFML/doc/html/TcpSocket_8hpp_source.html create mode 100644 SFML/doc/html/Text_8hpp_source.html create mode 100644 SFML/doc/html/Texture_8hpp_source.html create mode 100644 SFML/doc/html/ThreadLocalPtr_8hpp_source.html create mode 100644 SFML/doc/html/ThreadLocal_8hpp_source.html create mode 100644 SFML/doc/html/Thread_8hpp_source.html create mode 100644 SFML/doc/html/Time_8hpp_source.html create mode 100644 SFML/doc/html/Touch_8hpp_source.html create mode 100644 SFML/doc/html/Transform_8hpp_source.html create mode 100644 SFML/doc/html/Transformable_8hpp_source.html create mode 100644 SFML/doc/html/UdpSocket_8hpp_source.html create mode 100644 SFML/doc/html/Utf_8hpp_source.html create mode 100644 SFML/doc/html/Vector2_8hpp_source.html create mode 100644 SFML/doc/html/Vector3_8hpp_source.html create mode 100644 SFML/doc/html/VertexArray_8hpp_source.html create mode 100644 SFML/doc/html/VertexBuffer_8hpp_source.html create mode 100644 SFML/doc/html/Vertex_8hpp_source.html create mode 100644 SFML/doc/html/VideoMode_8hpp_source.html create mode 100644 SFML/doc/html/View_8hpp_source.html create mode 100644 SFML/doc/html/WindowHandle_8hpp_source.html create mode 100644 SFML/doc/html/WindowStyle_8hpp_source.html create mode 100644 SFML/doc/html/Window_2Export_8hpp_source.html create mode 100644 SFML/doc/html/Window_2Window_8hpp_source.html create mode 100644 SFML/doc/html/Window_8hpp_source.html create mode 100644 SFML/doc/html/annotated.html create mode 100644 SFML/doc/html/bc_s.png create mode 100644 SFML/doc/html/bdwn.png create mode 100644 SFML/doc/html/classes.html create mode 100644 SFML/doc/html/classsf_1_1AlResource-members.html create mode 100644 SFML/doc/html/classsf_1_1AlResource.html create mode 100644 SFML/doc/html/classsf_1_1AlResource.png create mode 100644 SFML/doc/html/classsf_1_1CircleShape-members.html create mode 100644 SFML/doc/html/classsf_1_1CircleShape.html create mode 100644 SFML/doc/html/classsf_1_1CircleShape.png create mode 100644 SFML/doc/html/classsf_1_1Clipboard-members.html create mode 100644 SFML/doc/html/classsf_1_1Clipboard.html create mode 100644 SFML/doc/html/classsf_1_1Clock-members.html create mode 100644 SFML/doc/html/classsf_1_1Clock.html create mode 100644 SFML/doc/html/classsf_1_1Color-members.html create mode 100644 SFML/doc/html/classsf_1_1Color.html create mode 100644 SFML/doc/html/classsf_1_1Context-members.html create mode 100644 SFML/doc/html/classsf_1_1Context.html create mode 100644 SFML/doc/html/classsf_1_1Context.png create mode 100644 SFML/doc/html/classsf_1_1ConvexShape-members.html create mode 100644 SFML/doc/html/classsf_1_1ConvexShape.html create mode 100644 SFML/doc/html/classsf_1_1ConvexShape.png create mode 100644 SFML/doc/html/classsf_1_1Cursor-members.html create mode 100644 SFML/doc/html/classsf_1_1Cursor.html create mode 100644 SFML/doc/html/classsf_1_1Cursor.png create mode 100644 SFML/doc/html/classsf_1_1Drawable-members.html create mode 100644 SFML/doc/html/classsf_1_1Drawable.html create mode 100644 SFML/doc/html/classsf_1_1Drawable.png create mode 100644 SFML/doc/html/classsf_1_1Event-members.html create mode 100644 SFML/doc/html/classsf_1_1Event.html create mode 100644 SFML/doc/html/classsf_1_1FileInputStream-members.html create mode 100644 SFML/doc/html/classsf_1_1FileInputStream.html create mode 100644 SFML/doc/html/classsf_1_1FileInputStream.png create mode 100644 SFML/doc/html/classsf_1_1Font-members.html create mode 100644 SFML/doc/html/classsf_1_1Font.html create mode 100644 SFML/doc/html/classsf_1_1Ftp-members.html create mode 100644 SFML/doc/html/classsf_1_1Ftp.html create mode 100644 SFML/doc/html/classsf_1_1Ftp.png create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse-members.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.png create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1Response-members.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1Response.html create mode 100644 SFML/doc/html/classsf_1_1Ftp_1_1Response.png create mode 100644 SFML/doc/html/classsf_1_1GlResource-members.html create mode 100644 SFML/doc/html/classsf_1_1GlResource.html create mode 100644 SFML/doc/html/classsf_1_1GlResource.png create mode 100644 SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock-members.html create mode 100644 SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html create mode 100644 SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png create mode 100644 SFML/doc/html/classsf_1_1Glyph-members.html create mode 100644 SFML/doc/html/classsf_1_1Glyph.html create mode 100644 SFML/doc/html/classsf_1_1Http-members.html create mode 100644 SFML/doc/html/classsf_1_1Http.html create mode 100644 SFML/doc/html/classsf_1_1Http.png create mode 100644 SFML/doc/html/classsf_1_1Http_1_1Request-members.html create mode 100644 SFML/doc/html/classsf_1_1Http_1_1Request.html create mode 100644 SFML/doc/html/classsf_1_1Http_1_1Response-members.html create mode 100644 SFML/doc/html/classsf_1_1Http_1_1Response.html create mode 100644 SFML/doc/html/classsf_1_1Image-members.html create mode 100644 SFML/doc/html/classsf_1_1Image.html create mode 100644 SFML/doc/html/classsf_1_1InputSoundFile-members.html create mode 100644 SFML/doc/html/classsf_1_1InputSoundFile.html create mode 100644 SFML/doc/html/classsf_1_1InputSoundFile.png create mode 100644 SFML/doc/html/classsf_1_1InputStream-members.html create mode 100644 SFML/doc/html/classsf_1_1InputStream.html create mode 100644 SFML/doc/html/classsf_1_1InputStream.png create mode 100644 SFML/doc/html/classsf_1_1IpAddress-members.html create mode 100644 SFML/doc/html/classsf_1_1IpAddress.html create mode 100644 SFML/doc/html/classsf_1_1Joystick-members.html create mode 100644 SFML/doc/html/classsf_1_1Joystick.html create mode 100644 SFML/doc/html/classsf_1_1Keyboard-members.html create mode 100644 SFML/doc/html/classsf_1_1Keyboard.html create mode 100644 SFML/doc/html/classsf_1_1Listener-members.html create mode 100644 SFML/doc/html/classsf_1_1Listener.html create mode 100644 SFML/doc/html/classsf_1_1Lock-members.html create mode 100644 SFML/doc/html/classsf_1_1Lock.html create mode 100644 SFML/doc/html/classsf_1_1Lock.png create mode 100644 SFML/doc/html/classsf_1_1MemoryInputStream-members.html create mode 100644 SFML/doc/html/classsf_1_1MemoryInputStream.html create mode 100644 SFML/doc/html/classsf_1_1MemoryInputStream.png create mode 100644 SFML/doc/html/classsf_1_1Mouse-members.html create mode 100644 SFML/doc/html/classsf_1_1Mouse.html create mode 100644 SFML/doc/html/classsf_1_1Music-members.html create mode 100644 SFML/doc/html/classsf_1_1Music.html create mode 100644 SFML/doc/html/classsf_1_1Music.png create mode 100644 SFML/doc/html/classsf_1_1Mutex-members.html create mode 100644 SFML/doc/html/classsf_1_1Mutex.html create mode 100644 SFML/doc/html/classsf_1_1Mutex.png create mode 100644 SFML/doc/html/classsf_1_1NonCopyable-members.html create mode 100644 SFML/doc/html/classsf_1_1NonCopyable.html create mode 100644 SFML/doc/html/classsf_1_1NonCopyable.png create mode 100644 SFML/doc/html/classsf_1_1OutputSoundFile-members.html create mode 100644 SFML/doc/html/classsf_1_1OutputSoundFile.html create mode 100644 SFML/doc/html/classsf_1_1OutputSoundFile.png create mode 100644 SFML/doc/html/classsf_1_1Packet-members.html create mode 100644 SFML/doc/html/classsf_1_1Packet.html create mode 100644 SFML/doc/html/classsf_1_1Rect-members.html create mode 100644 SFML/doc/html/classsf_1_1Rect.html create mode 100644 SFML/doc/html/classsf_1_1RectangleShape-members.html create mode 100644 SFML/doc/html/classsf_1_1RectangleShape.html create mode 100644 SFML/doc/html/classsf_1_1RectangleShape.png create mode 100644 SFML/doc/html/classsf_1_1RenderStates-members.html create mode 100644 SFML/doc/html/classsf_1_1RenderStates.html create mode 100644 SFML/doc/html/classsf_1_1RenderTarget-members.html create mode 100644 SFML/doc/html/classsf_1_1RenderTarget.html create mode 100644 SFML/doc/html/classsf_1_1RenderTarget.png create mode 100644 SFML/doc/html/classsf_1_1RenderTexture-members.html create mode 100644 SFML/doc/html/classsf_1_1RenderTexture.html create mode 100644 SFML/doc/html/classsf_1_1RenderTexture.png create mode 100644 SFML/doc/html/classsf_1_1RenderWindow-members.html create mode 100644 SFML/doc/html/classsf_1_1RenderWindow.html create mode 100644 SFML/doc/html/classsf_1_1RenderWindow.png create mode 100644 SFML/doc/html/classsf_1_1Sensor-members.html create mode 100644 SFML/doc/html/classsf_1_1Sensor.html create mode 100644 SFML/doc/html/classsf_1_1Shader-members.html create mode 100644 SFML/doc/html/classsf_1_1Shader.html create mode 100644 SFML/doc/html/classsf_1_1Shader.png create mode 100644 SFML/doc/html/classsf_1_1Shape-members.html create mode 100644 SFML/doc/html/classsf_1_1Shape.html create mode 100644 SFML/doc/html/classsf_1_1Shape.png create mode 100644 SFML/doc/html/classsf_1_1Socket-members.html create mode 100644 SFML/doc/html/classsf_1_1Socket.html create mode 100644 SFML/doc/html/classsf_1_1Socket.png create mode 100644 SFML/doc/html/classsf_1_1SocketSelector-members.html create mode 100644 SFML/doc/html/classsf_1_1SocketSelector.html create mode 100644 SFML/doc/html/classsf_1_1Sound-members.html create mode 100644 SFML/doc/html/classsf_1_1Sound.html create mode 100644 SFML/doc/html/classsf_1_1Sound.png create mode 100644 SFML/doc/html/classsf_1_1SoundBuffer-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundBuffer.html create mode 100644 SFML/doc/html/classsf_1_1SoundBuffer.png create mode 100644 SFML/doc/html/classsf_1_1SoundBufferRecorder-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundBufferRecorder.html create mode 100644 SFML/doc/html/classsf_1_1SoundBufferRecorder.png create mode 100644 SFML/doc/html/classsf_1_1SoundFileFactory-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundFileFactory.html create mode 100644 SFML/doc/html/classsf_1_1SoundFileReader-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundFileReader.html create mode 100644 SFML/doc/html/classsf_1_1SoundFileWriter-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundFileWriter.html create mode 100644 SFML/doc/html/classsf_1_1SoundRecorder-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundRecorder.html create mode 100644 SFML/doc/html/classsf_1_1SoundRecorder.png create mode 100644 SFML/doc/html/classsf_1_1SoundSource-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundSource.html create mode 100644 SFML/doc/html/classsf_1_1SoundSource.png create mode 100644 SFML/doc/html/classsf_1_1SoundStream-members.html create mode 100644 SFML/doc/html/classsf_1_1SoundStream.html create mode 100644 SFML/doc/html/classsf_1_1SoundStream.png create mode 100644 SFML/doc/html/classsf_1_1Sprite-members.html create mode 100644 SFML/doc/html/classsf_1_1Sprite.html create mode 100644 SFML/doc/html/classsf_1_1Sprite.png create mode 100644 SFML/doc/html/classsf_1_1String-members.html create mode 100644 SFML/doc/html/classsf_1_1String.html create mode 100644 SFML/doc/html/classsf_1_1TcpListener-members.html create mode 100644 SFML/doc/html/classsf_1_1TcpListener.html create mode 100644 SFML/doc/html/classsf_1_1TcpListener.png create mode 100644 SFML/doc/html/classsf_1_1TcpSocket-members.html create mode 100644 SFML/doc/html/classsf_1_1TcpSocket.html create mode 100644 SFML/doc/html/classsf_1_1TcpSocket.png create mode 100644 SFML/doc/html/classsf_1_1Text-members.html create mode 100644 SFML/doc/html/classsf_1_1Text.html create mode 100644 SFML/doc/html/classsf_1_1Text.png create mode 100644 SFML/doc/html/classsf_1_1Texture-members.html create mode 100644 SFML/doc/html/classsf_1_1Texture.html create mode 100644 SFML/doc/html/classsf_1_1Texture.png create mode 100644 SFML/doc/html/classsf_1_1Thread-members.html create mode 100644 SFML/doc/html/classsf_1_1Thread.html create mode 100644 SFML/doc/html/classsf_1_1Thread.png create mode 100644 SFML/doc/html/classsf_1_1ThreadLocal-members.html create mode 100644 SFML/doc/html/classsf_1_1ThreadLocal.html create mode 100644 SFML/doc/html/classsf_1_1ThreadLocal.png create mode 100644 SFML/doc/html/classsf_1_1ThreadLocalPtr-members.html create mode 100644 SFML/doc/html/classsf_1_1ThreadLocalPtr.html create mode 100644 SFML/doc/html/classsf_1_1ThreadLocalPtr.png create mode 100644 SFML/doc/html/classsf_1_1Time-members.html create mode 100644 SFML/doc/html/classsf_1_1Time.html create mode 100644 SFML/doc/html/classsf_1_1Touch-members.html create mode 100644 SFML/doc/html/classsf_1_1Touch.html create mode 100644 SFML/doc/html/classsf_1_1Transform-members.html create mode 100644 SFML/doc/html/classsf_1_1Transform.html create mode 100644 SFML/doc/html/classsf_1_1Transformable-members.html create mode 100644 SFML/doc/html/classsf_1_1Transformable.html create mode 100644 SFML/doc/html/classsf_1_1Transformable.png create mode 100644 SFML/doc/html/classsf_1_1UdpSocket-members.html create mode 100644 SFML/doc/html/classsf_1_1UdpSocket.html create mode 100644 SFML/doc/html/classsf_1_1UdpSocket.png create mode 100644 SFML/doc/html/classsf_1_1Utf.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_0116_01_4-members.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_0116_01_4.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_0132_01_4-members.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_0132_01_4.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_018_01_4-members.html create mode 100644 SFML/doc/html/classsf_1_1Utf_3_018_01_4.html create mode 100644 SFML/doc/html/classsf_1_1Vector2-members.html create mode 100644 SFML/doc/html/classsf_1_1Vector2.html create mode 100644 SFML/doc/html/classsf_1_1Vector3-members.html create mode 100644 SFML/doc/html/classsf_1_1Vector3.html create mode 100644 SFML/doc/html/classsf_1_1Vertex-members.html create mode 100644 SFML/doc/html/classsf_1_1Vertex.html create mode 100644 SFML/doc/html/classsf_1_1VertexArray-members.html create mode 100644 SFML/doc/html/classsf_1_1VertexArray.html create mode 100644 SFML/doc/html/classsf_1_1VertexArray.png create mode 100644 SFML/doc/html/classsf_1_1VertexBuffer-members.html create mode 100644 SFML/doc/html/classsf_1_1VertexBuffer.html create mode 100644 SFML/doc/html/classsf_1_1VertexBuffer.png create mode 100644 SFML/doc/html/classsf_1_1VideoMode-members.html create mode 100644 SFML/doc/html/classsf_1_1VideoMode.html create mode 100644 SFML/doc/html/classsf_1_1View-members.html create mode 100644 SFML/doc/html/classsf_1_1View.html create mode 100644 SFML/doc/html/classsf_1_1Window-members.html create mode 100644 SFML/doc/html/classsf_1_1Window.html create mode 100644 SFML/doc/html/classsf_1_1Window.png create mode 100644 SFML/doc/html/closed.png create mode 100644 SFML/doc/html/deprecated.html create mode 100644 SFML/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html create mode 100644 SFML/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html create mode 100644 SFML/doc/html/dir_89e9fb32471ae291b179a889144513db.html create mode 100644 SFML/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html create mode 100644 SFML/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 SFML/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html create mode 100644 SFML/doc/html/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 SFML/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html create mode 100644 SFML/doc/html/doc.png create mode 100644 SFML/doc/html/doxygen.css create mode 100644 SFML/doc/html/doxygen.png create mode 100644 SFML/doc/html/dynsections.js create mode 100644 SFML/doc/html/files.html create mode 100644 SFML/doc/html/folderclosed.png create mode 100644 SFML/doc/html/folderopen.png create mode 100644 SFML/doc/html/functions.html create mode 100644 SFML/doc/html/functions_0x7e.html create mode 100644 SFML/doc/html/functions_b.html create mode 100644 SFML/doc/html/functions_c.html create mode 100644 SFML/doc/html/functions_d.html create mode 100644 SFML/doc/html/functions_e.html create mode 100644 SFML/doc/html/functions_enum.html create mode 100644 SFML/doc/html/functions_eval.html create mode 100644 SFML/doc/html/functions_eval_b.html create mode 100644 SFML/doc/html/functions_eval_c.html create mode 100644 SFML/doc/html/functions_eval_d.html create mode 100644 SFML/doc/html/functions_eval_e.html create mode 100644 SFML/doc/html/functions_eval_f.html create mode 100644 SFML/doc/html/functions_eval_g.html create mode 100644 SFML/doc/html/functions_eval_h.html create mode 100644 SFML/doc/html/functions_eval_i.html create mode 100644 SFML/doc/html/functions_eval_j.html create mode 100644 SFML/doc/html/functions_eval_k.html create mode 100644 SFML/doc/html/functions_eval_l.html create mode 100644 SFML/doc/html/functions_eval_m.html create mode 100644 SFML/doc/html/functions_eval_n.html create mode 100644 SFML/doc/html/functions_eval_o.html create mode 100644 SFML/doc/html/functions_eval_p.html create mode 100644 SFML/doc/html/functions_eval_q.html create mode 100644 SFML/doc/html/functions_eval_r.html create mode 100644 SFML/doc/html/functions_eval_s.html create mode 100644 SFML/doc/html/functions_eval_t.html create mode 100644 SFML/doc/html/functions_eval_u.html create mode 100644 SFML/doc/html/functions_eval_v.html create mode 100644 SFML/doc/html/functions_eval_w.html create mode 100644 SFML/doc/html/functions_eval_x.html create mode 100644 SFML/doc/html/functions_eval_y.html create mode 100644 SFML/doc/html/functions_eval_z.html create mode 100644 SFML/doc/html/functions_f.html create mode 100644 SFML/doc/html/functions_func.html create mode 100644 SFML/doc/html/functions_func_0x7e.html create mode 100644 SFML/doc/html/functions_func_b.html create mode 100644 SFML/doc/html/functions_func_c.html create mode 100644 SFML/doc/html/functions_func_d.html create mode 100644 SFML/doc/html/functions_func_e.html create mode 100644 SFML/doc/html/functions_func_f.html create mode 100644 SFML/doc/html/functions_func_g.html create mode 100644 SFML/doc/html/functions_func_h.html create mode 100644 SFML/doc/html/functions_func_i.html create mode 100644 SFML/doc/html/functions_func_k.html create mode 100644 SFML/doc/html/functions_func_l.html create mode 100644 SFML/doc/html/functions_func_m.html create mode 100644 SFML/doc/html/functions_func_n.html create mode 100644 SFML/doc/html/functions_func_o.html create mode 100644 SFML/doc/html/functions_func_p.html create mode 100644 SFML/doc/html/functions_func_r.html create mode 100644 SFML/doc/html/functions_func_s.html create mode 100644 SFML/doc/html/functions_func_t.html create mode 100644 SFML/doc/html/functions_func_u.html create mode 100644 SFML/doc/html/functions_func_v.html create mode 100644 SFML/doc/html/functions_func_w.html create mode 100644 SFML/doc/html/functions_func_z.html create mode 100644 SFML/doc/html/functions_g.html create mode 100644 SFML/doc/html/functions_h.html create mode 100644 SFML/doc/html/functions_i.html create mode 100644 SFML/doc/html/functions_j.html create mode 100644 SFML/doc/html/functions_k.html create mode 100644 SFML/doc/html/functions_l.html create mode 100644 SFML/doc/html/functions_m.html create mode 100644 SFML/doc/html/functions_n.html create mode 100644 SFML/doc/html/functions_o.html create mode 100644 SFML/doc/html/functions_p.html create mode 100644 SFML/doc/html/functions_q.html create mode 100644 SFML/doc/html/functions_r.html create mode 100644 SFML/doc/html/functions_rela.html create mode 100644 SFML/doc/html/functions_s.html create mode 100644 SFML/doc/html/functions_t.html create mode 100644 SFML/doc/html/functions_type.html create mode 100644 SFML/doc/html/functions_u.html create mode 100644 SFML/doc/html/functions_v.html create mode 100644 SFML/doc/html/functions_vars.html create mode 100644 SFML/doc/html/functions_w.html create mode 100644 SFML/doc/html/functions_x.html create mode 100644 SFML/doc/html/functions_y.html create mode 100644 SFML/doc/html/functions_z.html create mode 100644 SFML/doc/html/globals.html create mode 100644 SFML/doc/html/globals_defs.html create mode 100644 SFML/doc/html/group__audio.html create mode 100644 SFML/doc/html/group__graphics.html create mode 100644 SFML/doc/html/group__network.html create mode 100644 SFML/doc/html/group__system.html create mode 100644 SFML/doc/html/group__window.html create mode 100644 SFML/doc/html/hierarchy.html create mode 100644 SFML/doc/html/index.html create mode 100644 SFML/doc/html/jquery.js create mode 100644 SFML/doc/html/mainpage_8hpp_source.html create mode 100644 SFML/doc/html/menudata.js create mode 100644 SFML/doc/html/modules.html create mode 100644 SFML/doc/html/namespacemembers.html create mode 100644 SFML/doc/html/namespacemembers_type.html create mode 100644 SFML/doc/html/namespaces.html create mode 100644 SFML/doc/html/namespacesf_1_1Glsl.html create mode 100644 SFML/doc/html/nav_f.png create mode 100644 SFML/doc/html/nav_g.png create mode 100644 SFML/doc/html/nav_h.png create mode 100644 SFML/doc/html/open.png create mode 100644 SFML/doc/html/pages.html create mode 100644 SFML/doc/html/splitbar.png create mode 100644 SFML/doc/html/structsf_1_1BlendMode-members.html create mode 100644 SFML/doc/html/structsf_1_1BlendMode.html create mode 100644 SFML/doc/html/structsf_1_1ContextSettings-members.html create mode 100644 SFML/doc/html/structsf_1_1ContextSettings.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickButtonEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickButtonEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickConnectEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickConnectEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickMoveEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1JoystickMoveEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1KeyEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1KeyEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseButtonEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseButtonEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseMoveEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseMoveEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseWheelEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseWheelEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseWheelScrollEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1MouseWheelScrollEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1SensorEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1SensorEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1SizeEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1SizeEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1TextEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1TextEvent.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1TouchEvent-members.html create mode 100644 SFML/doc/html/structsf_1_1Event_1_1TouchEvent.html create mode 100644 SFML/doc/html/structsf_1_1Font_1_1Info-members.html create mode 100644 SFML/doc/html/structsf_1_1Font_1_1Info.html create mode 100644 SFML/doc/html/structsf_1_1Joystick_1_1Identification-members.html create mode 100644 SFML/doc/html/structsf_1_1Joystick_1_1Identification.html create mode 100644 SFML/doc/html/structsf_1_1Music_1_1Span-members.html create mode 100644 SFML/doc/html/structsf_1_1Music_1_1Span.html create mode 100644 SFML/doc/html/structsf_1_1Shader_1_1CurrentTextureType.html create mode 100644 SFML/doc/html/structsf_1_1SoundFileReader_1_1Info-members.html create mode 100644 SFML/doc/html/structsf_1_1SoundFileReader_1_1Info.html create mode 100644 SFML/doc/html/structsf_1_1SoundStream_1_1Chunk-members.html create mode 100644 SFML/doc/html/structsf_1_1SoundStream_1_1Chunk.html create mode 100644 SFML/doc/html/sync_off.png create mode 100644 SFML/doc/html/sync_on.png create mode 100644 SFML/doc/html/tab_a.png create mode 100644 SFML/doc/html/tab_b.png create mode 100644 SFML/doc/html/tab_h.png create mode 100644 SFML/doc/html/tab_s.png create mode 100644 SFML/doc/html/tabs.css create mode 100644 SFML/examples/ftp/Ftp.cpp create mode 100644 SFML/examples/ftp/ftp.exe create mode 100644 SFML/examples/island/Island.cpp create mode 100644 SFML/examples/island/island.exe create mode 100644 SFML/examples/island/resources/sansation.ttf create mode 100644 SFML/examples/island/resources/terrain.frag create mode 100644 SFML/examples/island/resources/terrain.vert create mode 100644 SFML/examples/joystick/Joystick.cpp create mode 100644 SFML/examples/joystick/joystick.exe create mode 100644 SFML/examples/joystick/resources/sansation.ttf create mode 100644 SFML/examples/opengl/OpenGL.cpp create mode 100644 SFML/examples/opengl/opengl.exe create mode 100644 SFML/examples/opengl/resources/background.jpg create mode 100644 SFML/examples/opengl/resources/sansation.ttf create mode 100644 SFML/examples/opengl/resources/texture.jpg create mode 100644 SFML/examples/pong/Pong.cpp create mode 100644 SFML/examples/pong/pong.exe create mode 100644 SFML/examples/pong/resources/ball.wav create mode 100644 SFML/examples/pong/resources/sansation.ttf create mode 100644 SFML/examples/shader/Effect.hpp create mode 100644 SFML/examples/shader/Shader.cpp create mode 100644 SFML/examples/shader/resources/background.jpg create mode 100644 SFML/examples/shader/resources/billboard.frag create mode 100644 SFML/examples/shader/resources/billboard.geom create mode 100644 SFML/examples/shader/resources/billboard.vert create mode 100644 SFML/examples/shader/resources/blink.frag create mode 100644 SFML/examples/shader/resources/blur.frag create mode 100644 SFML/examples/shader/resources/devices.png create mode 100644 SFML/examples/shader/resources/edge.frag create mode 100644 SFML/examples/shader/resources/logo.png create mode 100644 SFML/examples/shader/resources/pixelate.frag create mode 100644 SFML/examples/shader/resources/sansation.ttf create mode 100644 SFML/examples/shader/resources/sfml.png create mode 100644 SFML/examples/shader/resources/storm.vert create mode 100644 SFML/examples/shader/resources/text-background.png create mode 100644 SFML/examples/shader/resources/wave.vert create mode 100644 SFML/examples/shader/shader.exe create mode 100644 SFML/examples/sockets/Sockets.cpp create mode 100644 SFML/examples/sockets/TCP.cpp create mode 100644 SFML/examples/sockets/UDP.cpp create mode 100644 SFML/examples/sockets/sockets.exe create mode 100644 SFML/examples/sound-capture/SoundCapture.cpp create mode 100644 SFML/examples/sound-capture/sound-capture.exe create mode 100644 SFML/examples/sound/Sound.cpp create mode 100644 SFML/examples/sound/resources/canary.wav create mode 100644 SFML/examples/sound/resources/ding.flac create mode 100644 SFML/examples/sound/resources/orchestral.ogg create mode 100644 SFML/examples/sound/sound.exe create mode 100644 SFML/examples/voip/Client.cpp create mode 100644 SFML/examples/voip/Server.cpp create mode 100644 SFML/examples/voip/VoIP.cpp create mode 100644 SFML/examples/voip/voip.exe create mode 100644 SFML/examples/win32/Win32.cpp create mode 100644 SFML/examples/win32/resources/image1.jpg create mode 100644 SFML/examples/win32/resources/image2.jpg create mode 100644 SFML/examples/win32/win32.exe create mode 100644 SFML/examples/window/Window.cpp create mode 100644 SFML/examples/window/window.exe create mode 100644 SFML/include/SFML/Audio.hpp create mode 100644 SFML/include/SFML/Audio/AlResource.hpp create mode 100644 SFML/include/SFML/Audio/Export.hpp create mode 100644 SFML/include/SFML/Audio/InputSoundFile.hpp create mode 100644 SFML/include/SFML/Audio/Listener.hpp create mode 100644 SFML/include/SFML/Audio/Music.hpp create mode 100644 SFML/include/SFML/Audio/OutputSoundFile.hpp create mode 100644 SFML/include/SFML/Audio/Sound.hpp create mode 100644 SFML/include/SFML/Audio/SoundBuffer.hpp create mode 100644 SFML/include/SFML/Audio/SoundBufferRecorder.hpp create mode 100644 SFML/include/SFML/Audio/SoundFileFactory.hpp create mode 100644 SFML/include/SFML/Audio/SoundFileFactory.inl create mode 100644 SFML/include/SFML/Audio/SoundFileReader.hpp create mode 100644 SFML/include/SFML/Audio/SoundFileWriter.hpp create mode 100644 SFML/include/SFML/Audio/SoundRecorder.hpp create mode 100644 SFML/include/SFML/Audio/SoundSource.hpp create mode 100644 SFML/include/SFML/Audio/SoundStream.hpp create mode 100644 SFML/include/SFML/Config.hpp create mode 100644 SFML/include/SFML/GpuPreference.hpp create mode 100644 SFML/include/SFML/Graphics.hpp create mode 100644 SFML/include/SFML/Graphics/BlendMode.hpp create mode 100644 SFML/include/SFML/Graphics/CircleShape.hpp create mode 100644 SFML/include/SFML/Graphics/Color.hpp create mode 100644 SFML/include/SFML/Graphics/ConvexShape.hpp create mode 100644 SFML/include/SFML/Graphics/Drawable.hpp create mode 100644 SFML/include/SFML/Graphics/Export.hpp create mode 100644 SFML/include/SFML/Graphics/Font.hpp create mode 100644 SFML/include/SFML/Graphics/Glsl.hpp create mode 100644 SFML/include/SFML/Graphics/Glsl.inl create mode 100644 SFML/include/SFML/Graphics/Glyph.hpp create mode 100644 SFML/include/SFML/Graphics/Image.hpp create mode 100644 SFML/include/SFML/Graphics/PrimitiveType.hpp create mode 100644 SFML/include/SFML/Graphics/Rect.hpp create mode 100644 SFML/include/SFML/Graphics/Rect.inl create mode 100644 SFML/include/SFML/Graphics/RectangleShape.hpp create mode 100644 SFML/include/SFML/Graphics/RenderStates.hpp create mode 100644 SFML/include/SFML/Graphics/RenderTarget.hpp create mode 100644 SFML/include/SFML/Graphics/RenderTexture.hpp create mode 100644 SFML/include/SFML/Graphics/RenderWindow.hpp create mode 100644 SFML/include/SFML/Graphics/Shader.hpp create mode 100644 SFML/include/SFML/Graphics/Shape.hpp create mode 100644 SFML/include/SFML/Graphics/Sprite.hpp create mode 100644 SFML/include/SFML/Graphics/Text.hpp create mode 100644 SFML/include/SFML/Graphics/Texture.hpp create mode 100644 SFML/include/SFML/Graphics/Transform.hpp create mode 100644 SFML/include/SFML/Graphics/Transformable.hpp create mode 100644 SFML/include/SFML/Graphics/Vertex.hpp create mode 100644 SFML/include/SFML/Graphics/VertexArray.hpp create mode 100644 SFML/include/SFML/Graphics/VertexBuffer.hpp create mode 100644 SFML/include/SFML/Graphics/View.hpp create mode 100644 SFML/include/SFML/Main.hpp create mode 100644 SFML/include/SFML/Network.hpp create mode 100644 SFML/include/SFML/Network/Export.hpp create mode 100644 SFML/include/SFML/Network/Ftp.hpp create mode 100644 SFML/include/SFML/Network/Http.hpp create mode 100644 SFML/include/SFML/Network/IpAddress.hpp create mode 100644 SFML/include/SFML/Network/Packet.hpp create mode 100644 SFML/include/SFML/Network/Socket.hpp create mode 100644 SFML/include/SFML/Network/SocketHandle.hpp create mode 100644 SFML/include/SFML/Network/SocketSelector.hpp create mode 100644 SFML/include/SFML/Network/TcpListener.hpp create mode 100644 SFML/include/SFML/Network/TcpSocket.hpp create mode 100644 SFML/include/SFML/Network/UdpSocket.hpp create mode 100644 SFML/include/SFML/OpenGL.hpp create mode 100644 SFML/include/SFML/System.hpp create mode 100644 SFML/include/SFML/System/Clock.hpp create mode 100644 SFML/include/SFML/System/Err.hpp create mode 100644 SFML/include/SFML/System/Export.hpp create mode 100644 SFML/include/SFML/System/FileInputStream.hpp create mode 100644 SFML/include/SFML/System/InputStream.hpp create mode 100644 SFML/include/SFML/System/Lock.hpp create mode 100644 SFML/include/SFML/System/MemoryInputStream.hpp create mode 100644 SFML/include/SFML/System/Mutex.hpp create mode 100644 SFML/include/SFML/System/NativeActivity.hpp create mode 100644 SFML/include/SFML/System/NonCopyable.hpp create mode 100644 SFML/include/SFML/System/Sleep.hpp create mode 100644 SFML/include/SFML/System/String.hpp create mode 100644 SFML/include/SFML/System/String.inl create mode 100644 SFML/include/SFML/System/Thread.hpp create mode 100644 SFML/include/SFML/System/Thread.inl create mode 100644 SFML/include/SFML/System/ThreadLocal.hpp create mode 100644 SFML/include/SFML/System/ThreadLocalPtr.hpp create mode 100644 SFML/include/SFML/System/ThreadLocalPtr.inl create mode 100644 SFML/include/SFML/System/Time.hpp create mode 100644 SFML/include/SFML/System/Utf.hpp create mode 100644 SFML/include/SFML/System/Utf.inl create mode 100644 SFML/include/SFML/System/Vector2.hpp create mode 100644 SFML/include/SFML/System/Vector2.inl create mode 100644 SFML/include/SFML/System/Vector3.hpp create mode 100644 SFML/include/SFML/System/Vector3.inl create mode 100644 SFML/include/SFML/Window.hpp create mode 100644 SFML/include/SFML/Window/Clipboard.hpp create mode 100644 SFML/include/SFML/Window/Context.hpp create mode 100644 SFML/include/SFML/Window/ContextSettings.hpp create mode 100644 SFML/include/SFML/Window/Cursor.hpp create mode 100644 SFML/include/SFML/Window/Event.hpp create mode 100644 SFML/include/SFML/Window/Export.hpp create mode 100644 SFML/include/SFML/Window/GlResource.hpp create mode 100644 SFML/include/SFML/Window/Joystick.hpp create mode 100644 SFML/include/SFML/Window/Keyboard.hpp create mode 100644 SFML/include/SFML/Window/Mouse.hpp create mode 100644 SFML/include/SFML/Window/Sensor.hpp create mode 100644 SFML/include/SFML/Window/Touch.hpp create mode 100644 SFML/include/SFML/Window/VideoMode.hpp create mode 100644 SFML/include/SFML/Window/Window.hpp create mode 100644 SFML/include/SFML/Window/WindowHandle.hpp create mode 100644 SFML/include/SFML/Window/WindowStyle.hpp create mode 100644 SFML/lib/cmake/SFML/SFMLConfig.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLConfigDependencies.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLConfigVersion.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLSharedTargets-debug.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLSharedTargets-release.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLSharedTargets.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLStaticTargets-debug.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLStaticTargets-release.cmake create mode 100644 SFML/lib/cmake/SFML/SFMLStaticTargets.cmake create mode 100644 SFML/lib/flac.lib create mode 100644 SFML/lib/freetype.lib create mode 100644 SFML/lib/ogg.lib create mode 100644 SFML/lib/openal32.lib create mode 100644 SFML/lib/sfml-audio-d.lib create mode 100644 SFML/lib/sfml-audio-d.pdb create mode 100644 SFML/lib/sfml-audio-s-d.lib create mode 100644 SFML/lib/sfml-audio-s-d.pdb create mode 100644 SFML/lib/sfml-audio-s.lib create mode 100644 SFML/lib/sfml-audio.lib create mode 100644 SFML/lib/sfml-graphics-d.lib create mode 100644 SFML/lib/sfml-graphics-d.pdb create mode 100644 SFML/lib/sfml-graphics-s-d.lib create mode 100644 SFML/lib/sfml-graphics-s-d.pdb create mode 100644 SFML/lib/sfml-graphics-s.lib create mode 100644 SFML/lib/sfml-graphics.lib create mode 100644 SFML/lib/sfml-main-d.lib create mode 100644 SFML/lib/sfml-main-s-d.pdb create mode 100644 SFML/lib/sfml-main.lib create mode 100644 SFML/lib/sfml-network-d.lib create mode 100644 SFML/lib/sfml-network-d.pdb create mode 100644 SFML/lib/sfml-network-s-d.lib create mode 100644 SFML/lib/sfml-network-s-d.pdb create mode 100644 SFML/lib/sfml-network-s.lib create mode 100644 SFML/lib/sfml-network.lib create mode 100644 SFML/lib/sfml-system-d.lib create mode 100644 SFML/lib/sfml-system-d.pdb create mode 100644 SFML/lib/sfml-system-s-d.lib create mode 100644 SFML/lib/sfml-system-s-d.pdb create mode 100644 SFML/lib/sfml-system-s.lib create mode 100644 SFML/lib/sfml-system.lib create mode 100644 SFML/lib/sfml-window-d.lib create mode 100644 SFML/lib/sfml-window-d.pdb create mode 100644 SFML/lib/sfml-window-s-d.lib create mode 100644 SFML/lib/sfml-window-s-d.pdb create mode 100644 SFML/lib/sfml-window-s.lib create mode 100644 SFML/lib/sfml-window.lib create mode 100644 SFML/lib/vorbis.lib create mode 100644 SFML/lib/vorbisenc.lib create mode 100644 SFML/lib/vorbisfile.lib create mode 100644 SFML/license.md create mode 100644 SFML/readme.md mode change 100755 => 100644 Server.cpp mode change 100755 => 100644 Server.h rename main.cpp => Source.cpp (87%) mode change 100755 => 100644 mode change 100755 => 100644 engine/Camera.cpp mode change 100755 => 100644 engine/Camera.h create mode 100644 engine/Consts.h mode change 100755 => 100644 engine/Engine.cpp mode change 100755 => 100644 engine/Engine.h mode change 100755 => 100644 engine/Mesh.cpp mode change 100755 => 100644 engine/Mesh.h mode change 100755 => 100644 engine/Object.cpp mode change 100755 => 100644 engine/Object.h mode change 100755 => 100644 engine/Plane.cpp mode change 100755 => 100644 engine/Plane.h mode change 100755 => 100644 engine/ResourceManager.cpp mode change 100755 => 100644 engine/ResourceManager.h mode change 100755 => 100644 engine/Screen.cpp mode change 100755 => 100644 engine/Screen.h mode change 100755 => 100644 engine/Triangle.cpp mode change 100755 => 100644 engine/Triangle.h mode change 100755 => 100644 engine/World.cpp mode change 100755 => 100644 engine/World.h mode change 100755 => 100644 engine/animation/AColor.h mode change 100755 => 100644 engine/animation/AFunction.h mode change 100755 => 100644 engine/animation/ARotate.h mode change 100755 => 100644 engine/animation/AScale.h mode change 100755 => 100644 engine/animation/ATranslate.h mode change 100755 => 100644 engine/animation/ATranslateToPoint.h mode change 100755 => 100644 engine/animation/AWait.h mode change 100755 => 100644 engine/animation/Animation.cpp mode change 100755 => 100644 engine/animation/Animation.h mode change 100755 => 100644 engine/animation/Interpolation.h mode change 100755 => 100644 engine/fonts/Roboto-Light.ttf mode change 100755 => 100644 engine/fonts/Roboto-Medium.ttf mode change 100755 => 100644 engine/fonts/Roboto-Thin.ttf mode change 100755 => 100644 engine/fonts/fontRU.ttf mode change 100755 => 100644 engine/gui/Button.cpp mode change 100755 => 100644 engine/gui/Button.h mode change 100755 => 100644 engine/gui/Window.cpp mode change 100755 => 100644 engine/gui/Window.h mode change 100755 => 100644 engine/network/ClientUDP.cpp mode change 100755 => 100644 engine/network/ClientUDP.h mode change 100755 => 100644 engine/network/MsgType.cpp mode change 100755 => 100644 engine/network/MsgType.h mode change 100755 => 100644 engine/network/ReliableMsg.cpp mode change 100755 => 100644 engine/network/ReliableMsg.h mode change 100755 => 100644 engine/network/ServerUDP.cpp mode change 100755 => 100644 engine/network/ServerUDP.h mode change 100755 => 100644 engine/network/UDPConnection.cpp mode change 100755 => 100644 engine/network/UDPConnection.h mode change 100755 => 100644 engine/network/UDPSocket.cpp mode change 100755 => 100644 engine/network/UDPSocket.h mode change 100755 => 100644 engine/network/config.h mode change 100755 => 100644 engine/network/connect.txt mode change 100755 => 100644 engine/network/server.txt mode change 100755 => 100644 engine/physics/RigidBody.cpp mode change 100755 => 100644 engine/physics/RigidBody.h mode change 100755 => 100644 engine/physics/Simplex.h mode change 100755 => 100644 engine/physics/Solver.cpp mode change 100755 => 100644 engine/physics/Solver.h mode change 100755 => 100644 engine/utils/Log.cpp mode change 100755 => 100644 engine/utils/Log.h mode change 100755 => 100644 engine/utils/Matrix4x4.cpp mode change 100755 => 100644 engine/utils/Matrix4x4.h mode change 100755 => 100644 engine/utils/Point4D.cpp mode change 100755 => 100644 engine/utils/Point4D.h mode change 100755 => 100644 engine/utils/Time.cpp mode change 100755 => 100644 engine/utils/Time.h mode change 100755 => 100644 img/gamePlay2.png mode change 100755 => 100644 img/gamePlay3.png mode change 100755 => 100644 img/gamePlay4.png mode change 100755 => 100644 img/gamePlay5.png mode change 100755 => 100644 img/gamePlay6.png mode change 100755 => 100644 img/gamePlay7.png mode change 100755 => 100644 maps/map1.obj mode change 100755 => 100644 maps/materials.txt mode change 100755 => 100644 obj/ability.obj mode change 100755 => 100644 obj/ability_mat.txt mode change 100755 => 100644 obj/ak47.obj mode change 100755 => 100644 obj/ak47_mat.txt mode change 100755 => 100644 obj/cube.obj mode change 100755 => 100644 obj/gold_ak47.obj mode change 100755 => 100644 obj/gold_ak47_mat.txt mode change 100755 => 100644 obj/gun.obj mode change 100755 => 100644 obj/gun_mat.txt mode change 100755 => 100644 obj/hill.obj mode change 100755 => 100644 obj/hill_mat.txt mode change 100755 => 100644 obj/rifle.obj mode change 100755 => 100644 obj/rifle_mat.txt mode change 100755 => 100644 obj/shotgun.obj mode change 100755 => 100644 obj/shotgun_mat.txt create mode 100644 openal32.dll create mode 100644 sfml-audio-2.dll create mode 100644 sfml-audio-d-2.dll create mode 100644 sfml-graphics-2.dll create mode 100644 sfml-graphics-d-2.dll create mode 100644 sfml-network-2.dll create mode 100644 sfml-network-d-2.dll create mode 100644 sfml-system-2.dll create mode 100644 sfml-system-d-2.dll create mode 100644 sfml-window-2.dll create mode 100644 sfml-window-d-2.dll create mode 100644 shooter.sln create mode 100644 shooter.vcxproj create mode 100644 shooter.vcxproj.filters mode change 100755 => 100644 sound/backNoise.ogg mode change 100755 => 100644 sound/classic_hurt.ogg mode change 100755 => 100644 sound/click.ogg mode change 100755 => 100644 sound/fallbig.ogg mode change 100755 => 100644 sound/fullAbility.ogg mode change 100755 => 100644 sound/fullHealth.ogg mode change 100755 => 100644 sound/kill.ogg mode change 100755 => 100644 sound/slow_mo.ogg mode change 100755 => 100644 sound/stonestep1.ogg mode change 100755 => 100644 sound/stonestep2.ogg mode change 100755 => 100644 sound/stonestep3.ogg mode change 100755 => 100644 sound/stonestep4.ogg mode change 100755 => 100644 sound/stonestep5.ogg mode change 100755 => 100644 sound/stonestep6.ogg mode change 100755 => 100644 sound/unslow_mo.ogg mode change 100755 => 100644 sound/weapons/ak47.ogg mode change 100755 => 100644 sound/weapons/change_weapon.ogg mode change 100755 => 100644 sound/weapons/gun.ogg mode change 100755 => 100644 sound/weapons/no_ammo.ogg mode change 100755 => 100644 sound/weapons/reload_ak47.ogg mode change 100755 => 100644 sound/weapons/reload_gun.ogg mode change 100755 => 100644 sound/weapons/reload_shotgun.ogg mode change 100755 => 100644 sound/weapons/shotgun.ogg mode change 100755 => 100644 textures/back.png mode change 100755 => 100644 textures/gui.png mode change 100755 => 100644 weapon/Ak47.cpp mode change 100755 => 100644 weapon/Ak47.h mode change 100755 => 100644 weapon/Gold_Ak47.h mode change 100755 => 100644 weapon/Gun.cpp mode change 100755 => 100644 weapon/Gun.h mode change 100755 => 100644 weapon/Rifle.cpp mode change 100755 => 100644 weapon/Rifle.h mode change 100755 => 100644 weapon/Shotgun.cpp mode change 100755 => 100644 weapon/Shotgun.h mode change 100755 => 100644 weapon/Weapon.cpp mode change 100755 => 100644 weapon/Weapon.h diff --git a/Bonus.cpp b/Bonus.cpp old mode 100755 new mode 100644 diff --git a/Bonus.h b/Bonus.h old mode 100755 new mode 100644 index bccc4e1..613ab5c --- a/Bonus.h +++ b/Bonus.h @@ -5,7 +5,7 @@ #ifndef SHOOTER_BONUS_H #define SHOOTER_BONUS_H -#include "World.h" +#include "engine/World.h" #include "Player.h" class Bonus : public RigidBody { diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 index daa7878..82b9c26 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,11 +3,11 @@ project(shooter) set(CMAKE_CXX_STANDARD 20) -include_directories(engine) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") add_executable(shooter # game: - main.cpp + Source.cpp Player.cpp Player.h Client.cpp @@ -94,12 +94,12 @@ add_executable(shooter engine/network/UDPSocket.h engine/network/config.h engine/animation/AFunction.h - ) + engine/Consts.h) if(APPLE OR UNIX) include_directories(/usr/local/include) else() - set(SFML_DIR "C:/Libraries/SFML/lib/cmake/SFML") + set(SFML_DIR "SFML/lib/cmake/SFML") set(SFML_STATIC_LIBRARIES TRUE) endif() diff --git a/Client.cpp b/Client.cpp old mode 100755 new mode 100644 index 4c89560..1a7c880 --- a/Client.cpp +++ b/Client.cpp @@ -5,7 +5,7 @@ #include "Client.h" #include -#include "utils/Log.h" +#include "engine/utils/Log.h" #include "Bonus.h" void Client::updatePacket() { @@ -71,7 +71,6 @@ void Client::processDisconnect(sf::Uint16 targetId) { void Client::processCustomPacket(MsgType type, sf::Packet& packet) { - int buff[3]; sf::Uint16 buffId[2]; double dbuff[10]; std::string tmp, tmp2; diff --git a/Client.h b/Client.h old mode 100755 new mode 100644 index 5aa71a8..5ad48b0 --- a/Client.h +++ b/Client.h @@ -5,7 +5,7 @@ #ifndef SHOOTER_CLIENT_H #define SHOOTER_CLIENT_H -#include "network/ClientUDP.h" +#include "engine/network/ClientUDP.h" #include "Player.h" class Client : public ClientUDP { diff --git a/Player.cpp b/Player.cpp old mode 100755 new mode 100644 index 82735c0..d4650e8 --- a/Player.cpp +++ b/Player.cpp @@ -3,9 +3,9 @@ // #include "Player.h" -#include "Screen.h" -#include "ResourceManager.h" -#include "utils/Log.h" +#include "engine/Screen.h" +#include "engine/ResourceManager.h" +#include "engine/utils/Log.h" void Player::rotateWeaponsRelativePoint(const Point4D& point4D, const Point4D& v, double val) { for(auto& weapon : _weapons) @@ -13,12 +13,12 @@ void Player::rotateWeaponsRelativePoint(const Point4D& point4D, const Point4D& v } void Player::playDeath() { - _deathSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/classic_hurt.ogg")); + _deathSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/classic_hurt.ogg")); _deathSound.play(); } void Player::playKill() { - _killSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/kill.ogg")); + _killSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/kill.ogg")); _killSound.play(); } @@ -90,7 +90,7 @@ void Player::nextWeapon() { _removeWeaponCallBack(_weapons[_selectedWeapon]); _selectedWeapon = (_selectedWeapon + 1) % _weapons.size(); _addWeaponCallBack(_weapons[_selectedWeapon]); - Log::log("_selected _selectedWeapon " + std::to_string(_selectedWeapon)); + Log::log("selectedWeapon " + std::to_string(_selectedWeapon)); _changeWeaponSound.play(); } } @@ -104,7 +104,7 @@ void Player::previousWeapon() { else _selectedWeapon = _weapons.size() - 1; _addWeaponCallBack(_weapons[_selectedWeapon]); - Log::log("_selected _selectedWeapon " + std::to_string(_selectedWeapon)); + Log::log("selectedWeapon " + std::to_string(_selectedWeapon)); _changeWeaponSound.play(); } } diff --git a/Player.h b/Player.h old mode 100755 new mode 100644 index 1ae3bfb..31b29fc --- a/Player.h +++ b/Player.h @@ -7,9 +7,9 @@ #include #include -#include -#include "Camera.h" -#include "World.h" +#include "engine/ResourceManager.h" +#include "engine/Camera.h" +#include "engine/World.h" #include "weapon/Ak47.h" #include "weapon/Shotgun.h" #include "weapon/Gun.h" @@ -41,7 +41,7 @@ private: std::string _name = "im"; std::vector> _weapons; - uint8_t _selectedWeapon = 0; + size_t _selectedWeapon = 0; std::function _damagePlayerCallBack; std::function _addTraceCallBack; @@ -53,16 +53,16 @@ private: std::function(const Point4D&, const Point4D&)> _rayCastFunction; public: Player() { - loadObj("../obj/cube.obj", "", Point4D{0.5, 1.9, 0.5}); + loadObj("obj/cube.obj", "", Point4D{0.5, 1.9, 0.5}); setAcceleration(Point4D{0, -_g, 0}); setCollision(true); setVisible(false); setColor({240, 168, 168}); - _changeWeaponSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/weapons/change_weapon.ogg")); + _changeWeaponSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/weapons/change_weapon.ogg")); - _fullHealthSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/fullHealth.ogg")); - _fullAbilitySound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/fullAbility.ogg")); + _fullHealthSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/fullHealth.ogg")); + _fullAbilitySound.setBuffer(*ResourceManager::loadSoundBuffer("sound/fullAbility.ogg")); setCollisionCallBack([this](const std::string& objName, std::shared_ptr obj) {collisionWithObject(objName, obj);}); }; diff --git a/PlayerController.cpp b/PlayerController.cpp index d8c5453..38c1506 100644 --- a/PlayerController.cpp +++ b/PlayerController.cpp @@ -3,19 +3,19 @@ // #include "PlayerController.h" -#include "utils/Log.h" -#include "animation/AColor.h" -#include "animation/AFunction.h" -#include "animation/AWait.h" -#include "animation/ATranslate.h" -#include "animation/ATranslateToPoint.h" -#include "animation/Timeline.h" +#include "engine/utils/Log.h" +#include "engine/animation/AColor.h" +#include "engine/animation/AFunction.h" +#include "engine/animation/AWait.h" +#include "engine/animation/ATranslate.h" +#include "engine/animation/ATranslateToPoint.h" +#include "engine/animation/Timeline.h" PlayerController::PlayerController(std::shared_ptr player, std::shared_ptr keyboard, std::shared_ptr mouse) : _player(player), _keyboard(keyboard), _mouse(mouse) { - _slowMoSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/slow_mo.ogg")); - _unSlowMoSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/unslow_mo.ogg")); + _slowMoSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/slow_mo.ogg")); + _unSlowMoSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/unslow_mo.ogg")); } void PlayerController::update() { @@ -47,25 +47,25 @@ void PlayerController::update() { std::shared_ptr camera = _player->attached("camera"); if(_inRunning) { if (!Timeline::isInAnimList("camera_hor_oscil")) { - Timeline::animate("camera_hor_oscil", new ATranslate(camera, -camera->left() / 6, 0.3,Animation::LoopOut::None, Animation::cos)); + Timeline::animate("camera_hor_oscil", new ATranslate(camera, -camera->left() / 6, 0.3,Animation::LoopOut::None, Animation::InterpolationType::cos)); Timeline::animate("camera_hor_oscil", new AWait(0)); - Timeline::animate("camera_hor_oscil", new ATranslate(camera, camera->left() / 6, 0.3, Animation::LoopOut::None, Animation::cos)); + Timeline::animate("camera_hor_oscil", new ATranslate(camera, camera->left() / 6, 0.3, Animation::LoopOut::None, Animation::InterpolationType::cos)); - Timeline::animate("camera_vert_oscil", new ATranslate(camera, -Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::cos)); + Timeline::animate("camera_vert_oscil", new ATranslate(camera, -Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::InterpolationType::cos)); Timeline::animate("camera_vert_oscil", new AWait(0)); - Timeline::animate("camera_vert_oscil", new ATranslate(camera, Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None,Animation::cos)); + Timeline::animate("camera_vert_oscil", new ATranslate(camera, Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::InterpolationType::cos)); Timeline::animate("camera_vert_oscil", new AWait(0)); - Timeline::animate("camera_vert_oscil", new ATranslate(camera, -Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::cos)); + Timeline::animate("camera_vert_oscil", new ATranslate(camera, -Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::InterpolationType::cos)); Timeline::animate("camera_vert_oscil", new AWait(0)); - Timeline::animate("camera_vert_oscil", new ATranslate(camera, Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::cos)); + Timeline::animate("camera_vert_oscil", new ATranslate(camera, Point4D{0, 1, 0} / 12, 0.15, Animation::LoopOut::None, Animation::InterpolationType::cos)); - Timeline::animate("camera_init", new ATranslateToPoint( camera, _player->position() + Point4D{0, 1.8, 0}, 0.3, Animation::None, Animation::cos)); + Timeline::animate("camera_init", new ATranslateToPoint( camera, _player->position() + Point4D{0, 1.8, 0}, 0.3, Animation::LoopOut::None, Animation::InterpolationType::cos)); } } else if(inRunning_old && !_inRunning) { Timeline::deleteAnimationList("camera_hor_oscil"); Timeline::deleteAnimationList("camera_vert_oscil"); Timeline::deleteAnimationList("camera_init"); - Timeline::animate("camera_init", new ATranslateToPoint( camera, _player->position() + Point4D{0, 1.8, 0}, 0.15, Animation::None, Animation::cos)); + Timeline::animate("camera_init", new ATranslateToPoint( camera, _player->position() + Point4D{0, 1.8, 0}, 0.15, Animation::LoopOut::None, Animation::InterpolationType::cos)); } // Left and right @@ -111,8 +111,18 @@ void PlayerController::update() { } if (Keyboard::isKeyPressed(sf::Keyboard::Space) && _player->inCollision()) { - _player->addVelocity(Point4D{0, std::abs(_player->collisionNormal().y()) * sqrt(2 * _g * _jumpHeight) * coeff, 0}); - _player->translate(Point4D{0, Time::deltaTime() * _walkSpeed * 2 * coeff, 0}); + + // if we just want to jump, we have to add particular speed + if (!_isSliding) + _player->addVelocity(Point4D{ 0, std::abs(_player->collisionNormal().y()) * sqrt(2 * -_player->acceleration().y() * _jumpHeight) * coeff, 0 }); + // if we want to slide, we have to add speed * 60/fps to make it independent on frame rate + else + _player->addVelocity(Point4D{ 0, std::abs(_player->collisionNormal().y()) * sqrt(2 * -_player->acceleration().y() * _jumpHeight) * coeff * 60.0 / Time::fps(), 0 }); + + _player->translate(Point4D{ 0, Time::deltaTime() * _walkSpeed * 2 * coeff * 60.0 / Time::fps(), 0 }); + _isSliding = true; + } else { + _isSliding = false; } // Mouse movement @@ -124,10 +134,10 @@ void PlayerController::update() { double rotationLeft = displacement.y() / 1000.0; // You can only see in range [-90 : 90] grad - if (_player->headAngle() + rotationLeft > M_PI / 2) - rotationLeft = M_PI / 2 - _player->headAngle(); - if (_player->headAngle() + rotationLeft < -M_PI / 2) - rotationLeft = -M_PI / 2 - _player->headAngle(); + if (_player->headAngle() + rotationLeft > Consts::PI / 2) + rotationLeft = Consts::PI / 2 - _player->headAngle(); + if (_player->headAngle() + rotationLeft < -Consts::PI / 2) + rotationLeft = -Consts::PI / 2 - _player->headAngle(); _player->setHeadAngle(_player->headAngle() + rotationLeft); _player->rotateWeaponsRelativePoint(_player->position() + Point4D{0, 1.8, 0}, _player->left(), rotationLeft); @@ -149,8 +159,8 @@ void PlayerController::update() { } if ((_inRunning || _player->velocity().sqrAbs() > 3) && _player->inCollision() && _walkSound.getStatus() != sf::Sound::Status::Playing) { - int soundNum = round((double) rand() / RAND_MAX * 5) + 1; - _walkSound.setBuffer(*ResourceManager::loadSoundBuffer("../sound/stonestep" + std::to_string(soundNum) + ".ogg")); + int soundNum = (int)((double) rand() / RAND_MAX * 5) + 1; + _walkSound.setBuffer(*ResourceManager::loadSoundBuffer("sound/stonestep" + std::to_string(soundNum) + ".ogg")); _walkSound.play(); } } diff --git a/PlayerController.h b/PlayerController.h index 5622aa5..77e6bfb 100644 --- a/PlayerController.h +++ b/PlayerController.h @@ -6,8 +6,8 @@ #define SHOOTER_PLAYERCONTROLLER_H #include "Player.h" -#include "Keyboard.h" -#include "Mouse.h" +#include "engine/Keyboard.h" +#include "engine/Mouse.h" class PlayerController { private: @@ -16,11 +16,10 @@ private: std::shared_ptr _mouse; bool _inRunning = false; + bool _isSliding = false; double _slowMoCoefficient = 5; bool _isInSlowMo = false; - double _g = 35; - sf::Sound _slowMoSound; sf::Sound _unSlowMoSound; sf::Sound _walkSound; diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/SFML/bin/openal32.dll b/SFML/bin/openal32.dll new file mode 100644 index 0000000000000000000000000000000000000000..1bb27f0d62d8a368115ea95694362249aaaac2ea GIT binary patch literal 630784 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

Px9?rL+f&Gmv74H)S4_BKBZ4 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

%A?%Mp<|Qd~dKFK}aOFYseh&F{L~s4N5ac*?Q(h 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 ^4s`4D)R7412o4Igr)JF$WfzubEbx&CdhH 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%0DXD(vCe&PrXEu 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 (?JjidHV#-N|~9rC6Ux!LCd? zuAuV}HqL{1u^S$&Oi4^Q+>^jEj>80)cZ?q8WlPK8N-@U1#tv{>Am>bFWAHg29 z{*H=92bi5$Uncb%Yr^ZV=X6g+C%jib4Re#;>r4c@YgLMhE}uMP-NspdZxQT1ryr@P zyv?T0{gUPTk6?En`9wu)gVGJ}Es&qTf?fG5O+_QlXI|ayEWO7@3U=$=FI2Q4{rl%V zU8L{9M8U4;l&+%4kRe+xCP@C7CD;RRWvHm@jOd*9C!~I3M!f!&LlB?*=zt07qoSnt znh5r^m+w^cbAjcKUTX4tyI`+BDqBS@dTSQjPmtdq#Qe`bs^~?tOb@4BRy|QJ-nRw2 ziSuXNmyAoRd4Fyx+9L(K?v<}7=Y?;Jc_yXexJVT2QRW3IGK`@YM&Fu?`LhJO#-<__ zZCW{XT$Q2JKdh+|XR$5%hWVIBdmVqQlS5%o>iJ75Cs?qr=v}FzsBsJDF4-o%w?qo|^W4D1M9iNk*t7fSBVPQHcH?%0NPdzf*rUf`z1+tx0}_YW zGci9i=JmIj)3BVzEzGTBI$IhSCW1X^b>njSFwSPcRV*LLSqrkh8e+m=1zQ%v&6OJ|d%jVph=QH`+CLC+_ zm(4{uhdFFo$Sn{Nvv9rnbrWTw|+=Vr42kv=NU4x_E6n@;qZawORdtY@N8xAGSYy zz=qp=Cuk!+(tnQa!fni7n?-V))Yi!P&}%~X3J4I=L$#R)cC2Ov%$i_k-GSRYU<+3J zk4>lpxBt2QuBxiyda^{WpQ^|7&O*3dPEY+Ko!iq#tN)dr_OJBuWB&Jao3ZM8!ytc_ z|MHLH`+2JCje`7{{_pdDJn`StCq@7F^oytePXBlPtH=DE{_pc!Y4Hfy|9k)RYX5io zzsn!c;qUaDf3%;MTWT$)^Zh&6m#@RW%c*PocRBw~U-N&YXLtYa$2YV4@9AE>#q?~c z{{KF||6noQ9rS_xZ|z8R|KH2`I9fyR3xxNDeEgsO!tI?W{P*-;UjIG)!2gk+|9_;1 zPyW07fBVaZ9e=0)yPwwX{O{?Vcm4Nt7V+QHH{ba?J>_5iw*2AW>Hqe}k{5rc|NHo3 znSZDMyM3Pu|4#q+^$Y*D)`FHt&n&NX^PXBlN zjq3lM{_pl%>;Ikp@9TfZ^6&IN+dsulQ!fa@{rJyqlk`4Q;HJ%R8)y3@iNmwTW|%gM z8LrJ98zW|#3F4_i8n(cDfF)vaL5@P|;g0_el8L7Zx0~QevKmsiD`Wd(8C!?^Jf3`i zd;Icr2xG&xF?I#^y5||&4bi>8Sf{>>9f8z!z=G6}MX*^9#qkiGVfdvqq$6IyKBAn- z{qU@D#kxjI~TaI^@V`#(Iyzf~}C@ zW07YZ;{QMbQI7u({3Uoej@`+a(=O!O&Dbl*j0pS!Z4ch9_M+{Oj_B-U2wz$B=oJXs zFuW&Ymmz&nm$p|K+lunaP>*qujCCK+*fI|s@5$J8$k+*tZGre8-$A6$+s_ysVC*O4 z?m@<0L+TwyogsaXVX?~-I3MI!H2UErzBNu^LF?0ujf%lSt!MDdc}V}W=tqeAImQYg zD^Rwzl^VO!PL17fug30Re=JzDl^WYq7y#QN(7s%2*Vw*8dJx6y(X*9YTz3L=VdkVT~LeFW_9rLT9@gwdU)S%z#6hftT8iShO7xQ zVog~yX3R`jbJl{H;@hz$YsFeKbJm8nW$l;+B2ihf_RN}fU>#W}X2UwOF03oFW!+eJ z)`KbVFV#I6F(o1~_eLydzQTb6B8595(sF-9D|bfpYW`j7f@tkS5ewZFU#M<~1nrI} z&ZF39HinI5l%9gR^Yz14%RvR8Rb+G%@WgN9w4vrZA8tfhWni>Rj6${-n^NaGLCEdGr$T+pGY*4VzpVysf z*Hb4LeCo8PPL&(1OpVf&9z_IEC(n}_&5M>s&oBf$8jk&gjj_I-T8<6VspSs2d8N_f zQ_I~8%Zjt2;c{+C=AgW2aHQOl(#(RaXy?N0XfWofg+*L!afi&T(!%0X%RQrcg;}|! zqgWF=OK?^3Z@~q`z6Mtn{}!$+h@T|Zk>DrsZ^72s*Wf4dZ^6oI5P-kVdeCLIoVs2X zV&{o(i5(%naOyIziI$$>XhA>zW=pIKXZlgl&olohoIo~RU09eG%`AxR7hi}UFD_s4 z6UUe0M~p3ZPcBLzf?Q+@?D9oV={`Kgr z`pe-eE~$HIac;qo_|=5pbK@7&spJeQ!;YOwVj@}TYlp(({LIqsWkp4W#ih}Ti|JGn z6QXd(_Mr*jNxJ;L{Yd7hB)702oso0oBXSFZ(W$(6>Nnj>3wZ!(d}FY1YEzGbVP`sE#U#XzcT${U zi>EFy6r|Y7Q1DfG`s6y)`T6;YL{75T2>rwmseO4O^puE%?bvm zVr}5i|FSY}>niQmy)?5p5QmDN#jiW-&j&4z;vm}Jq2V`YsE0`55$IW2y{iL<3(6mY`gV72W zPd6XInv>dhYN0~?f;AaATxfQsPN0+dgK|p>3v#p0taDjs)GpR`ixy<#&CjT)S!soZ zMT0W4hMtrMPBQ>SpX@r@OK&1|DA&3P#1zyPx3_yO)(9 zD<>~H39h-~vpgHDP5vR^q$@r%hwz;|#nC~h)*WKqMD{yeXJ+N9#@NNK}oo3Nm&>GOH(|%%(Kcj7@t*0%g&8Cf~1-XmhQ_QvWr*)yV zpj|@qXu;>P$cW70(XM5ss9=|}d}OvH@^Gbftiafn^n&%MSQ}^rH$cRH7n&D)OC*)}G2 zACX&{m6K5zGhw6&BVlhkW)@@MHhvRnkEJjE^XiD1kQQYq{<8i}v@8gV{=DIaL<~;*;Q``^oR=8(IllBu zVz12HQmkWlz))Va>!6!BHIZw((9wiDG281ByXQrtMUf}t>npD9r7Fx%+&sqCbt1L4 zKUmv-WG+r5I~w2hrNoT9lD2t-P-IPl@9Yx8)!Tw4x))n|IaumY9F0asRb`j%qd>L! z8M*n%!v0s zI8d)ht12A;9x+KV!|xq(i%SAn&&Ejma7`DyY-~l<;D~9NC2`jm+47ewk3=2_Mmcu9 z>BYH)%;l)acZof7i%ZKg^8i1^qsV?&>O<$uq9R6}v-L{gd(YhHh^~W!(?xbC_9)0d zZOx!6!Jwq&4l0HWh}1cCeZl@+GV{Ye2Wu<4+K8W!R+!0S6T)9{o*@aH%koNduO3wz z%_!`Zn;mVJlUW?8U9IA4M&Zfrkzdaw8SO_#u4~_|OZy6jB64Fe4xNFQnM3G;Sv9?| zBt8TuS4LU}`ygV`A;ke?>cy}Zj)=%r)1%R$r}pa6y?wVh?-BVp(!C?U>0T7gLNPiN z=3zb3GfQ)NvA%s;#mVy`?FxGoH|+{DGD|p5ekfHQ z%ct}$NdC7gjLCYZf*1{eQ?0@v7WK?5&dme}5z%6~2yEk>dz-n*36(kfq!u#?sA(j! zB9MT;-CSNtX5!ExQl6L*EzZv^0M%8jiXS)O4g-&5F!MoIFc1eN@&)~iaHexF62V_+w@_e`^hS*bci!t4W#iIf}4`wAeM!fT=ZDdn8cJafpk9@k#Yd@0l zYImB|Ya6MKBx09y0i_HCDjv~;E9%<5bI_mS@a*Y<07WLp`j(GKVs8qfZ6mk;X-%)l z-e67pg5kNvg$4QeqS!D6Xd*MTZfDxmGq{pU8$zvw;AtD_^*393MXn9{7#ECS{>iNc z`*trqIS)-@qkM8Oy2p-1P!|q-h=uf2U`Ex8Kxd)sl-YNl2c<|1Aj# z$&2})_+8cHRs4UmYeMoG{@-;?Lin!2YMiJ_c(U<6#hCt~AF3q}JX$SzK5ZAR$&Vb1 zHlMbSmhw}zrc}H4;>ydFzgJ1Ay!7vXugdQ# zpYz}SW$?SI|L)H5{epV2piV9LU2v_7?})u8GT2x!zwsMZ-un07gR!W*b$q0H z_3D*Z{2%(g%D?zj{nIBQ{;9a!DpeB$afvKXppNd=QMX+<2 z?dLyvqW|8zXAa8Bjt(A@lY7(9y!?W~qG3dRWy42|95p)D@3vRBOKsobnvR{Wy)LbD zm#*p8ck7?M-u?fibu+S`PBa{4)A}6U<5uWsFiEQm#=75 z5sp7HKQCoCRRS<>ZZol!&@3fdK;%cD=Qit+(V?Z$EG3`@vNQ7v3!-kbQPGlSzISeQ zC$pp^nm;ISR0;g1b3F5V^15bx#c=822M zWnAGS;^X2I;?v@D;`3bVR`E6Q4e@R9UGaVKBk_Rvx%id%t@wlZv-q2MLQIg(mTE}n zNh=-SZRcL&UgvgoySu&IzU}}w%N^nlbqn1>e~BMH?XgY3Mp8>EJS)5}Tqs__QLm6x zsjoCjnj%e;?vYkW8>BZWwK`9(BVR1HkS)25+@7)RFBfWeY0p?&t?kyE)<@PM>wD`w z`*ORf{SVu;ueQ^8JKhIQT{n}ly2ZWUUFEKEH@m;N3Equf)GPNc_AmFd{r&#uJiYrz zKYY?ndhm`|h+Uz&P+MpuTqy{GE_gzFAx-EmWC}S#p)gz+D@+vb67CV^2}^~Cgf+s` z!Y1J*VY~3U{;vMLeq6uExSTPcWUMv5Fp|wl<_z;;bG;eN`gCiK6&XmqDd%V>4imQ; z2aRuytIdJdENcPMu+@_7OP$Z1aqh$3T92KIc)u|J1_%#uu9d=S;m>n$SiD$nBsXJJ zCaGy!53P?jKwD%zuZ-(PChsI85Xf;d|j1;cT(F*h#!eoFhFbmB@{iROJ=r zE#+NhpK@HOuG(rRb+!7Gx?A0^CTn%HdRl!gMQfrp*IH<4T6100HQm++=!5ko<_hy6 z^HFoHxy$Tmk49dn*wgHno!5Ck7&j7gzNnNdYz3Qq{nF`r)xM}=zQRiY%e6SKvk;u!H+ zF&P=GC)bx#9Wu5x2wp&j#M_c2p zTdm2~ok+kv)@*C8wa{A1Y+qvQwvWEgwinoMAg#;XDc)25v;HQYe*d!ns=vd3%im4E z!>6w8q@I^^1qbnFKqS*#~!pqV4Z)#5s7vD{4=uTE5_s8iLM>MV7RI$vF^E>~Bn zJJe0u7X49Uk@-5d=N;=k>jUd!>r?9s>uc*f>qqNyySXE{mwBIi5tx_2z9k}Ws_=+# zwp2$ND5c2bDly4v08?r}eGKXH$_RlT#lnqG-_yEo07=PmJ`^1k(& zV`rcB%b7tsky0gckbkv=3xo#3wL)JZ4{J7E_)JWZEa?{P?P4Tqjr64Svb0~iLU!ej za%Z`loF(5S&z9%Oi{(x7LAjRFNNJ~JD}N}})GO5XY7V0_Tb;+qJfpsX@m@0v^+z&^Bmk`aSvr{W>GZc+7askj!+mk2%1+*_>srHlHzHG6IN<5q%Q-A=_DzHGlqd2MayBWI|4mpjwF&)w^O<^JL(dKY;0yvsbz zYwP8B5$e}K{d`*r;8H+jRn zWnN&ZH+au`FMF?hySyL0wti>7ub=79^%waM`5V#XLw@+wyEat<6NlY7OBjYs-+~ue zFFY@75q1b~3wuJ(ca_*$94Fo;P7@c4E5wJzop{$n;@9H$;-%=iC~1-{O_8U|%jC!9 zwPt6ln>EN9VvWMOOtJoHy=1**y>IPD3V*~_o@3vSRe1=Vd)D3tk~rTh^Tv9&A{!gL z7ri?EC4NKyDr{typW~PK_xN-C1^z0Z=c!|JJ_uwby-LIhaH>!ZZ+M=Nf|cwbTqpFT z-**Z#gayI@;Se^mnpi_j7B3aA6$gq@JWHWC8pIIv{z>so@WDQ?!41-D()qF~x0Bb% zKg#DQwUi5#ri!E(imMD#%9OFnOl7t*PkBsvMtL5MI7(6VS!xZWOHnP=SNo|$)nV#z zba0*ewEDezAs%V0HcTI`&(v4zTbawx^sn?I`m@Fd#v!AMd9m5ZY-YAFbIse#DdseD zjrpqi2A=9y^DL`|m26#QwYE$v)#_wrSeaIyHOv}st*{=p)>zM5yR09qUy!*Lwq*CT zv+P`Z7nbo`EJ`v6Y=yJi`Ox{y`O4u6*3TJnW> zmn-C}(7hgLUYokGn85Qo=wWD%9qM7 z=w&UnzS>e%)pq#vUg`ifTg_Dq)Kc|6Y}eyzIo4~h`lI^0nt&y}2n%|(mZA0425C9k zNNutS#i#46CuhVyeXp)VKjRr@@e7ADUm9-#%cUh!Uev~oGvrj_1S zzgC~F4=@%QJB_`@7;}R80`||f`e6Cavy1Gp_O15a;DQzQ!}c@wCi`q>jkDkT3i}e7 zS%rHMxStrA*{8MCO+7<@T))S9-0J5Rxlg#;+!VjL@B5L(Rk)XcTg*W;vxT|BLU7H4 z!ovcu{SfaKXM^h#qpkH?*i2N!4q_LO(i~!hgW`G8Ws)SdlX`;W2TCQ< z%}D%A={{+x^nsKp*Oi;f*UJr*Uigtu)U(m&PTGyyOaNy%G2?RUfNQ((lw~ z=nJvhkLn-lU+UlLNA>HCJY$%#z*ud(L_G5bv5ZO_)6dK_2b*Kf%~d*buO`1XC!v8G+nw3%-M;k@-BHk^R`3&Tux9fR$40k7|F59T(IY7$~Ve& z>KNv5le%4Pt~uJfT9SUgexs3(ygh8JGnSZ-;B#L$KV_WGwrX1!*{!g1W#GRCPG5I2 zh(ppJZij*;2@meC6Thw3Gv$SMQ z;%YOr{@QSDyf#N$s%_G?YlpO-wDa{8mr{Mcz8Gm*h38nKuh%y)hvguzYmDoR zu10ry-PagkWEn$@p~ln5)?HR3yMz6`{UCU5mAk@w+}rBC>3!k-;ME|~nD0Lk^bgi& z8-J69`ojG}H_-T2<{(4ukIx#fzNmc!_HKx!ywJSV6hIo|%zMno&F8R?ms!27mDY#W zm9}ViwHrCD90N<3?Ti6^F9h?IJFjB@jylP11J}apWxK`hbay`U^D>C)CS+4$NZHtgJb;h{zM|8ss2oV7T$iozt~@n$6xKQ z@z?tsKq|onR1F}0>#YNP+h<i2#TllQF8G1XO5Q|sUwlw zGa>FZ>XYg>YLa$BuVGw)Y~5l^gv+?xl!#;|nKeK{OTpcjVmBK)iZjcp>83GC&*PPU zayxrP{wRN(f14jksTw}#qZ4t(OktJqr0|AtSZD>_p8)2Xg^m7RRHdt>JEU#+;-94i zS(5LRAC~_qzbe0r@2!Q*-K#899#{5)QR=8ytIO1;nx>7no+X+)$G+KJ<{of)Ca+L6 zj9*#^6To+$;ekAHEF*Y_v`E?^eIkvOx5=N$Rn#Z+PxUK}DZ#Jpe}FQt2Gt5!i41R) z_kg#_d&PUt)BUb~Z+|Q^#>BL#8c70IBng)aGV#j|9RC51|Fdv`*aIHwcd@bZJ>UZP)a2(U%VjrWZMV5hH* z-;J7PJ$RujO%=bMjzt}6jx;BOi|3k)%nigRNAQThndexSS&gkR@D@vv;1+f_`xg5# zdjr1eMet@Lr!|u7;@h+E>Z6@ooQck(&ITgA7x0}8iC)wYIdyPL-3jiU?%l-k^W2B= zr>_#n?{z=IqyOku_v(5Lyeqt`yw=!;rQSAgw|Be$o*zlC%6)3w7c9I50{u;R0uJgD z=?ZMN#q3>!%^oM+j%WV>t9?{DfxkINZVPUnB|nI_E09*)^ z>wEMM^u5L(#!Keg=3Ukz#&xx|HsrS^;Dvv-i=3OC@y;Yic1<|I5pY^LUNa(%jbQdj zQPoI&WaC?KhbVRjcMKNu(BOyQ?Vg3P+lJQu1P)D<&cQRcmO9|qVt#po^pLbs+9JIw z{lHjNgH2N4*lv)^vA$)>B6MLrsQn*m8zRAL zL7F4b;0fv@>a*(e>K4`4I&0muUZC~6wb|M{ZJYKU*Ly&#sW;Y}>n-&;`XgB3C-rJZ z4>f{5@#^MHBC)QAWBTiHZ7^Q;zY$g-y4wOg8x5~H6Q;~x`T-AkKO}f$p zyEF-3@`m!BasUKfL%m$>s`gc*>S+A^77+6R^&<4Bwbl`qtyr6`tz+i)YDcvCT!*Az zgC^Yq9+=DZY{U;9(yJKf8EM8iV>-IE#&{C`bvx0?H^$j!T~jvOo7aO9rh}8uMUQ05 zx300e;|p%IiqNTv)=Zef<;?yDs~mQ7S3Iu!6{fhRUE6MK8?c+b?V0P0dV3P zP}(8;BBvSnbd>Xyv%{$kMjq)-gdR~D_73#}mXc^SFgZ7ze2?g5s%(HZ3AIz?FaacJ#S=U!(nmSq*O%~M#yEzWDm?0eXl z&z*0aAD!dyI@R6Ua61j%rfy4DA=0_p?Q{n2yae698C-drdpk_X4EJ6v!8~^n-e;xz zi2FEEz|-z?c)u6jt?p~g_y%HOLIOcl+So8_+ZSX>5O$@(O1HoS> z=72f>iI@KrMn6HiSZW|OmeRrRGl-K`5h=}=U&I^k!-IV<{~{+T=PDN}mntdBlQ7Bo zX#Wjp#{#g|X6*rR)+1>5X5z>_Avd0AG&EWo64lj{HnNWZ}`4d>J#d7c+!_Z{l{P)T56W&YpGg+HbNVtP0;Sw7HP}jIp5W0 z!mREyI-2R&=AEwXt@6URYwWBV^0rk#_B(}J#W$pPi1q&neNr;{jDWpwCF@~MqpRFY zzEK_opL>t|5cX*o@)__Y7b#c4liY;89gX(Pz)mfKXv69HHf%&d^2~5q^SjRMcz%aO(2sR;V=M$}r#WLJ!&j59FLDT-} zT!7Zd?^4S0fM?&V&4Z!(hp4E)?%-n-tXUMs)5KghocRQx3D+zvl@mr6o} zM_|BOY(NS zf}W(Gt6xZb zawWWgjLqq+=fF@-GZq==nOA_h>R9!y%dMtXG@dtn8lUiz^{Vwp+#9%z!4i9m{VE*Q z+3@zYotK?mSd~wmFC8V0vd#xbT?u!Y>J9dWdPUwyBGJ3NncjV9(4*dKUOm5qA0

  • 8$1GS-{7EDGDMBSzL-Sj?W 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 QGLcwisu^_a|HaS$0M9y3NB{r; literal 0 HcmV?d00001 diff --git a/SFML/bin/sfml-audio-2.dll b/SFML/bin/sfml-audio-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..af08059004b4e3a4eb61678583c34b652200ded3 GIT binary patch literal 911872 zcmeFadwf*Yxi>zO*(4hn*n>`B)Kp>_Ycx@VL4{7#BqTFIflLUQz(I&tnx@oXm?2mp zgifMtmSbsad+d2_t4Di|wHG-@t61Bb5XeM8Zr r>WXOw{0o1Vr}l`>eJ1TtYzG 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%0Am&3^Ohd*AiR{*h}O%QxVanZK94*3(@jK3lE_P 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
    M3DS=TYPAjp`#bjl-PdQm|%l?fKSF7XI;?{9JDU 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

    G}2QJXWBQp78tn>bz}IL_i$T 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

    3{&GxokkXa-Pv&zU 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%0DTW+SvHjf&P4b1zb4o&Xyp9F5SwD7o7Xt z+xD!Z@`YetdJYs_jEHdC+M$G~TcneNm~JDgd}&EuxVZU){)GPC0p3sl-kb4Me3XVu z*QMdo=}z;-+v#~-@DuXD%nn6a8CulipkZ$x@yBemfl+t_Jx0T*$HDo$s4;{gee-u- z@_x#he)9Y;ys`28FAOr#-_!e&Z6o7)Gcw@E|ps(zb0*h%+@ zy-SO+M_hJdPL(cXZ}RQsyG=f~Noxo3F!K6|n);YNV!es*hg zb*HQfuywn#*`#KJ-LZFK%Pe~85OSB$!KxtH7(G@;&3c-(ISe)oOa5y@Ok-4(sS9aL zt)yX?sS^%UtGO)NohJpS`F!s8-`o%Tc=5R>J3cOs7tgl%_EYmiwxX)r=ay;GbHh;~1f%j?Qj-%$0PgA>C!Lu5mrNv+o^_Kpq3 zd7aJMI3aj$XLsv1+epwWPhg)|&X;*#dg^BU?qkWj?$Zy_Ur5h%#a;2(d4qWEx zcEmE6o1^FZPLH>D&lHfmyMKI+K3U+m%b5_adfeXPVkko7xHTC5DJ_{Ri@>naJb>>^ zCGcmI^a7{r7O4gnnIlrZShC!3(#Kc|U#VPUNg?0Dk9Bwb{R!G7uwT;8_2iGWaj=E^ zF!*>=_QLa1yk90>wdJp0O?76yoBn8g!`ut zj_s5jl!GVgVDhCsVGfQ@hxL2tD+QYmUQO2ocYdP58Zv~)QzZ663m^~NC(?j=!UHC~ zy714mUU7=YNJHR|6^8ER6=J-&Pox3PRp#C1cZc`2mIua_kM(q3^v<_Jv-1*=DAUD9cPXc8+FdzH>C+<@R%XWwN8`OcHwa=rBr9)!i#CHC6Hg~u7 zwle6)! zC7IgyezNNLD0L}16#_JhIuFfhbV^!ucz7(saKZ4ocO+S*z_@$%CRE*Mun;)r28 zzM4Mp0P=x{SFNS}5@eV<(Fdf(IiK@e*UyOCK-ocNyRN1^_z1ulPF?jvw1pmz<}8zA zxMnH;tdX~{dKv2?N9ZU~>`G;Wo0hc+L2@gS`9kBA<_hwVVrW?-l1JrBwMa3^Qm%{IH_^jQ6H^^u%B8m((}n+1qFAmkfFCjL}0P&WC}*L+8v` z;sN^@Uq6sgdJ3p4vmAVOOI0g0ke-=OdBis!bdvO_6K3kBLLT|_xM66-6?6 zN7RAaSon3aL^Xq)?=s#;fdje9F8GVQ@0U0%BkDQAycvReF~s_Zu%fCp)77i!Eo$n zqh-z^%v2%aLPha#sIOA75h@|G1g9-?GO@mT9K+$_mJV^<7A0RP7rCQk7`o(nS~5@h z7;4Ge!-iZ+I}NX6d(&lGbT)|7;y&ZLvoF_U&Rnu0bI&HDwmM!MI&3WZ+QHm$sdzcp zt%vhkjFF0gyA>OViWMruW3x)$Csv7YCNvd~8W=cjN-}urJ12E$I8~lnwbyjW_7$Ma zj-sZ48wru~)b}{wpsw%#!>x}m={b0%(FpsfYv;R!<7e&Td`S9sMLgpy%VzsxPp_%L z%lv8kaJI!rwMUEi+`4@*yUj(RJ(}7F-R-m6=;>hUAG=@h0eRD9wXK}=J&<-E-~ka3**T1M%YkM&c}nLGp2lZT+2_+c3N3C0m_rqSn@0>pIXCz!7M1k;tD z;3Gfb5$D-Xkd)&?H+O<+rHg;|-rUS>FDvcDx?W8bEWavORKl9PKeB?0k`p!rZe1aWZ{&G3+U%Vs%V zY-O-KtDfEmzWnUXePB_3Bp26)hjC#re-9X_q;+?#_WnQG+GR;D-=`<-XZ@GfuM!xC zwc{h#uMiNi@%Y$_m5rKk{jM9G@efqSB}+p#+9Q@mZCo}4vmLb?2FEYv zL(Ht(V8(P6!8{)6w7orv8w)f3GY;KT?4h17{IQOIi)+%C!QX^)?wpBpJ}gkfVL>*S zb8A@A;U}F%4-^V$={GJBon0v%J~OV0Cu?;c&V$fzT^AHZ^obEtdD%X ziOIF`8oY(+ua@?J3&6 zV79o$-^6f2$Qe3N(g=XyGe{IhRU4%0D@CwZU$6F2t>%VpRp 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%0A(fm1MvXM6O^Bz&Qo1?B3!mJ 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

    ?4Tqv(Z`_-cbyX8S@qyVeJX+Rc)8H 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 NSXni*<^MN*{ugyI)ja?J literal 0 HcmV?d00001 diff --git a/SFML/bin/sfml-graphics-d-2.dll b/SFML/bin/sfml-graphics-d-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..d7b7e6dc430549ad8fe7b548d5918944a1e36e4c GIT binary patch literal 1435136 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

    VRq9n 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 z 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 wkN?+-_y`;yf#V}^d<2e}-)H9Y*@rwp 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� zAZLM`1#%Y1Ss-VDoCR_g_#dzU&eQ(xT<)Rs2M&KwbYTBqTjSpvWA=FeQQm+3DtZ5x zDeiCJ{XwADK8o}|V3%ALau�AZLM`1#%Y1Ss-VDoCR_g$XOs~ft&?$7RXs3lLhdS zLGG8cfNFvEQj!00H--^5==O;GgMf_y+M_gQmydh3$mL&WfgNY%eeC^&&K$XD&H_0L z+}ZvjYe;%xuezB7Gd(aD45a0 zFWN+>@QMIpjj)kdghaFG5Us+8I}u>$e^Y8JW|qOG#%WV(YK@a-%$zx^y0)VHYz=3U ztFAf}Yz}!_jg>G**f_S!X}_SZ%HI$QhJ#HJ<7|Jp!y7QxL^>M%!8(h{?5L|~i}*tA zA%ECcH+xcDZ7>)J*HzUZYPO9x7mT;q9Tt0?zpWwA(det|>WKIQ{>UOtU{W|qxI~?( zMjnF5MF_cRMV=~=w*c}JMtrR35>8<59$K^wLrc@{;dOT z8*~UrDdf?GSOlpokBCT@&!lX}F2kT{gbiGx9`!f^t!RS?^a&wlKH}8W4A~0K44H!# zq_^Qd%e?PzG&t2F$1~9?YQ+qMMllU(HMlY&$4r?iX2I&jDi>!b)fsa9@asjZuQeE2 zWa_KFO!;4^7c8AtS(1xT4+r+s*NZaLkgHJ3n8q?^*(>!ufcjPsZ{S0X)as1l8JdCP z16}gZS#HR0{A}F+%=b1L8@yrZU)I1k{qt0jfBY$V`6mMIKSSi7@=1~ZS;YT|_~#J% z^7HZ+0G>Ht>Pk#m<0cKy2!s`gveh49%p_= zIJ1#$X4a$r$psHEZqb!*36Y7MgC!;r~K= zVEv`Jk(%BiTZK_xDLz)isF#{}rN<77IAsZF z>D%db+4sbyvQ-7pmK$(SX=!>YqbQO7If&jx@4=1Y3i0^?Wp%WaspW|pbf6aqLoU#W0pu_8MCy~m)M2+>|~6OmNlXcISa}% zX_V#fL&-3I9FaBPuTdSbbs#l@!Z-Wc+E1A$lqI`mRDjs=P0rbci8S5ATuO!8sR0F7Q$amexlxrY$HmQb&sVQL`|f` z3;MLuBtvDm96&kyBSwEXp)XTQ*Nf>!Tcc5{11XE{!zwS96HANUHJu;hm_J@B^lnC6 zx5+k=T+Z3rQ?0WJj?j;JOtUX!40ifLO@ZJ-nx3VljmIyBRC=op$Xnfv=01cQ!wO1(Cm+wdV2l(ldbr#CfI?#M!9N+b=p$Y zki;@f(#hL|zL%|7v*MBJ<3)KWo>OaMsqGWNU^tAC0=kIyARA67VR)R-ZW7BpK0eWO zWjGpAl{;aysi3SA>;oC6Jv5!-)QNf}b#Cm$6os&2f;Ap4-!%H0xMKbyW4OuXnha7=iP9lWsx?UM-Yl$7jw@@H zD_;Tse7RED=8G&0h89e)jPDZq`;&vp{8bAlp}0XfZkn&HIf6-Hy6f6S?Q(kOZEp|w zmBG%0u5k+&E*ysj-#V@%6p$I0YlIpPjRx0k7+%X^b3*{_0{PLW(I^*J)QajE${Ok9 zin4O%xq4QuTnnwOP}Vn%NaGskc!abe>3B^$Gd$KmS-#2`A1ibrAJ-OBbP%oH_6cDh z1`sKR_)?`0e?A-u`LxM*3M2e4%!k=3*{coYr|+L@Rr({HTgB-!&#U6NVR*CDGc4*B z!f1(WQTn-ayYzq|InPct%loL#=rs?{d>PZO419F8S7y2W&vrj2J~xo+cg%5<$1UtB zxz@pzQ{{O^b|XHHnA`D0Nf}#aJL*%iqmKRJ{*bey3?48Wy|p>Zk?58zo&%hQU~4<3 zz zS~gO&%YJ*^Z1p~xKG%;4xX;@4EgbP;Pe!=UGuya5l6~w)(@)o9A7Xs|rg^{2VW#IE{ml;b z&y}@(0rBTee3l{bo?8-3}Y$7|1S((kgXRaf2m z?u$${ivOrS@kqCK^P{V;(lYzbK$UkNlwFJeO(nqbQMyt{wStx||G6iI=`53ZZDJty z*SIAG^?m*j&wt-}ytapt&&1gS=y%ZIt}}8 z`m+|44EGg(Jbr!0G0eSYjiVpQWU-bNbN#6nvr_r_BVEJN`ia~)D)pO*ABTNQ16x%* z_CDZPty3P8Jr&womV9NU|DBB4=*@TTl($rj8FyzTj{X!otB#=0i>TOXKR)RQ5;4Kw zJ`QgYbYej(G`_t>zPfEGz@ZXx5T^0+UqT^%`1{fMKBRueiL%yn@m4%~tKS5w61=`S}FQd^~?2 zwdd9gu}Y)NO*m&c)?Vp3ujPO$^Fx<_**UG z?HEOBze;%s8#lXP(25f%jNxFz0w3O)4Frsff*m1a?WAgByO(KU<3c}D=i^oE4*6y; z*Cylid|go?HU{NMYR1u^t)D&vN6(dAHriNZq|7+JuZ>%njPpZ5ZzE4YGUBL@H5 z0z~fTcL3w93r8#Ctni|6#MgR$*jQO!UsF+AGv)FMBedb6b9}8+gna>d5(_sIH+2L8 zSfkia>B;_4fVjCO15wAStL8_#_MQj|~h7DG{gIp0!*;1v_g?tS@ zf2U7Dh#dwPBjq`QJo?1nrWBo0A(>5et-a6wtaRBOUTMgG5$6GF_doRUmN(EG#DRz{ z@g}H=mf?T@c#9*SX6)qROoyklq{(PPuHzSR|J*9)BifyKTaax=ZIbZ@F_u*V^RxLp zPoxR2yGL-AqFS?9FPf!y3!w($^cB7dKdZ65Mm7$YtIFF|j*7@b7;A98lB_$K>#w5O zzq`I__6VTf_MD^C+a_0CV`E(>4x8dhkPV>-VWHJh7mhSGw71tOGiTFy#5HoU9rWj` z=eeDW64Op*;9H!2>=0{3$~c^y!a3nMjKq`^GsYox5mGoZ8wV;g{#pPgyg%QF>p+aZ z7Fi(Ie|h>sKv;pBj5j5AtQFqgZ>mN@L;VG8wNDCw0fRMG3r-0STI<36rz;kHA zz~-qF$`c~xUAP9Mjt4GJtI6~mbFm?R-lr1J1B{>jq)>MQXRk2{N1h-h-)%MI@3tB84+Gow@Z^xM(!45cTwxLed`o{Cc`SNtChF~bv z(T+1DWM9huP=^8>G_LtR_LewKq7g%cNDGheQ<8LtmPu+=iGBiwKMp)&E3T-imMZWl z3$1f8hP|DTnIGlkea4}PQBJBj0L}IUQzpy4L&Sd5c%ISJRatpK(XbOI!QbNC9-RJ5zCmo0!$C2sUW=3gB}>LKLr{VYwTacE2*EU+NTHoaJhKDk)#@`&YVo0c%9E56c+Z4?;%Xhwg5bWFN$|+r znadNJD&VttE=~wuXqY$=DYJm9?dsR>v*y`9+~2kcI5Tk??IeU%;KS1wz39bx3RwR? zMUQcyO{GaCxbS3Np4>()&k^Us0~^s}7!lL@98H3jcOHb?=53W5p0u>8U}Fbn3)9tP z0sD-rjT?x=gAN=#bk4br#&O1TypBBdS#xBX0tn9?Z<%XEsQE>o zS96Y9$*FY)_0kujC&I}(vOdQg5!zf#-Y^|&8D&C=5$9=h#Njf!nK-O0e%PNngkj^; z8j8l4N7BT8!#Gk=Q-+l_HbR}S3$0E=I7a$w>|)`$Vf1<$>%#x9_V7*pBgc&Z#{Mo*K7 zJP(`aMNda7n*z)V6{ozRXpkq|R)p+&QKh^dmqv`IX&2}m)8Yj7%dCGs~1>lHJR!#c!x za-SX6pq%Nr;ts!5XOQz8appuhletEY-S`#>Pas!L5jP=L18QwlM~kNaDW{<~f*;pe z%fTsr#A>`$M4vL#I3|~+mR?;xk+y*;{OF^71x$}~*06*)`yX4c;MHKjJiw+ZgV zAQrzj9Ptr^=>{>vW)N!;KhmFJ3(j$#V#t4%4DyG_HWuSGC>F~_au(>v0z>kL4jz&} z0>0b%N}gJWO#R@0Ja5f=&X8Y+bKdp2XA^5z)4J4C&EK&oVZ%E*7MfW8=g-se-zGemjZQv$jhXrYchCy9)Mn}8oa8L=!PJ@QBCVc zxDId-V8FTcV*$7=f237BpAdRo_53ygCr`!K<7`v;tG8r8UVGH^R5A~P7wx9~r2e=V zQ5M%pyGNO0)pRGqI>1`>TF*zXlb(PAKLjig@TT}30 zIqg={_iDUUdh$p|uh)}!v`HyIucuxQ+=}5O>rt)V>xSG$T{)A6b)rj6TZyn2kg86Q zHdUR_^VjKNhq^7wMYHfhHsoGgGeLLu> zLj?F;NxW&3LlK@`35y@GeSLo;-|7nG7pV^E*!W8_EzMHEi?1P z4}y6juRTwU1jiA7eE8J9`G(; z!Qwpe2H=V>0tc`Sa0p<$7V-c~0UH5-1z4^FZ@_B67Qi8Zr8`fw09FIG0S*F;UxG|P zH((=RFChQ=JW&d02do9`0Eip%gb6SYumZ3Ja1bzdNuHPoSOM4qI0!J_m?!1~RsgmD z4g!ofK@OlBuo18qkbg7e0J;F{0lNVsm*$B!z-@rv0Y-lr`3AfOxMW$L=mGo`aOPL? zME&wS@c>|d4|v@I{(x@4M!;S`{;hf92|)e|*az@cz+S+}+kgwW2e2C;Zbw-F!hrRF z9RP6$@(XAItOjfYh?US6&<O8R+umSKZz|6bz#La+j0S*Gj-UFV1Zou<^g8<{bNCR{OHUjnn^4CBPpbKy>U^hVA z2fYFF0ILC800#k|yC3v`Zb0t$(X_zKn(~?rb5025oi%>)S8Cql)l^nZtHZ(Xb^4Rv$2E>`Z=5eP zZNgsyf9EMd?r+WlDJ?Ju`?Ruwl*GBjoCQ9n78rJ>$j=5orsm0IJB0;C54q!0DUxGJ zTuA_E`Vd}Ib3@)?=|NA~3z^3GM7xf%FSpRpNmXrFBvaLC7*0f#z|&7d>$ zo}YmaP}2S=gY}SkZ_mJoI#2EghwbWqwVi%lZKsk%>!%hYRz zysw38!%91TObwqzNPf>Dq|VzB(%!EiWL|!U@Hm8jMo2z$;HPjY>Jd^-vwF>t_ZgBt zh>-NxASC^b>h%hQ#5)iCkSxX{BpA5w6Xn&cY&H2j~uT)|ye@fpKvP@a7EDMGkpbvFi0UZ^r_+PEP>;MjN zHz(=NH2p7Io&HmJ%xCqD@v`Wh-+x&Ue_nSSe}5MEMjighhRpnp828hLmFoDP zGmwE^vsJrp-ncOX%|PgUmDN5GYkBU(3^SKg^+pwlbR3u;+72bq+|JX z>+HQD0}b&@uTf-9Mo3$*PVUJ-r^zy@Wi?wZBhrp+>fbIJ?G~M$wHatiNu>UYAMESb zmVlml$p=pjPYboWvmQ9K>B=No$$qU=BSbjrzP_>!se%&ZU*xkFe5fP!*qnr~(P}ypKVP*S(+*_7&$etRN88U!8NB9rcJL?T z@10LMPlhh)_ByV`!=PlZbwM|)ZG|JEF0?0 zpJr>uN&98=kqpDj6dpGs)NnmQ@_ZU0@t;@IhkaQ| zKNTU<&qPQ*)sRd4xd@rwpz86Yn*N-cz8xX+^9n-djdeZJPu_@gI&f^k^!eBLEYHA) zvesq5p>B;Ca5#_H+}6K7#Mzex&hRYqwK;=6oC_YvfWtDW%YZ}s?Cb}J<$Ro4FHTbH z#pwuXv(KnuDMI3{Q0vLPYCU;a4YwhroR<(1?_z|w6f@LohU7O#4eQnPiCy)HrcNnB4s$oGe8)pSHZlwYZi>s^k)(uPc;Ep@kIW1Q0V_!y@ean^%*2$ONO zYqljVo+{Ml(51SYzp!T3W1CKo-Krk@`_V(s|N4T={KsA$&!-b{=5sPaotk}o<&Kr{ zzHDg{u0}^b{L#KURDaC0-VFHJ+VP`~$9z}crTTV+)R*mUV<^$Kv=M)ry%?7^TcyzM zM#y`65t9Dz2+2$Ot}J+EYbVNFq3XL@r|-OQcKV7t<8@+91{%sL1wQjSS*2s%wr8Lt z{y_3G?~b@mrbz$!pic8{S9EGYsFl~e40P0qvKBxQ(Fc)>Q<^#u{1NHZhpA5>_cP<7`&DP5i zXMWct$ZaBcDGIZ@0>iV=m(&h2Q=Z{G<(URof&&O$O_0HLe-X zRl|8|c%2&FtcJHD)aZbo@GI3_joX&l4&BgIv%?Bi@3jbZY!b>(&;R#-8YJqj-mwDOqh5pNfI0rJ|(AGQq!NKi>U$%KJ)ltoRc(80o zltrBwu3fCuU*kP}%YiajhFgI{+>Hnk#C}ZE|FYGI_T311#3v8i7ZdqvJT?B=@-5W} z5k9ac^BiM2^v@u=q=Yn1xi zj*xWJY2~%)?X2Of=?90p@>eSVDu1@T+qX`=10K|22W0C|Wt4JQr$%0<*xP_mkE6FY z)3eR)+#QQsw?uS2@cwf)|oN;;i zGXUhn-<~nb+V6%hDK=(1-;B7nW=urBV@h0ziLE;~;X4IPhZSg1K0bBEJ} z_!jOBAC0*i9)2wbv?Kl(+H57QAXW-1hk=Wk~{CmLr@3{XUt}Aifiuef7 z9tWMy0-rx2z7aZq8+yHj(181o69>36khTo@xDj&RKSzk;p~rVX_Y!n?5VD>?e%67< z=ZOQE&*1(72C)RN2Cy733wnGHG|vOB29F)c-Jd(jZKL8bCW>8Q?*{(}33i2LX9^ z8pOE(7ho2k9k3kmRlxTFy8#CQLsvmAAON@xunF)7z=*q`JK##dO@NJn-GIE+25}Lf z7H~D-7QkbGZGb-j2H$NEp9Q!9s{n5UK6Q^lH~_N%VZaK&HQ=0qg|)8F129ArnvmxB;*o@Frl;g9Z@< z{030@HN*ic0K?W9#D##b0M-Lu1Qa}kd;?B@*dVNc_W|cV0$l;EfE9r61I}J=5HkSR z1D*o>8ZhMR24M%Z0KNt|?orSJ$^j9;8o+CSNsk#sGhiv;5x~oUf(_6E@F&37Zy3Zp zz&8PZ2b}*n${p|);DT?WP6Ac{UImQWXb?98wgIAmsZXFD0*?QdL6`wvz;l4t0iJIg zL>*ukfV2I$snph_u5)X?<#Cq{{ z@u+xAY!KfNkBe`Ljp7OME%9x!Nqk29kz9+sfo)ud};sFffEaMvk z0panO%Ki9AMkE+oG}9Mu590IArInHP(r{C0>7`{ArDMiiS~lBcwv?7$o*B7p;y_Si z@?zZeg6B$klOsA^z}_=vzBlY|s1HX%IC`SAe3oYn&kL`QguMPpxU{?!pDHLV1)6d^ zHnN2@C@+&QR`QU*QxP+zT|N3ZmhYpLrHJaww*tR(_ok$~Q9ZFd-7Q7`Y54RD>=Co5 z-jGQp*dJ;_`DH+i$wKKJ8)H?=uLJ2zz+_gdUD7Qj(=&Znci`JCr3vMkl-raz3E51C zaa1*Jj;+dv?-w+dvgMeRvWpq4pTbFrlca8nMmooaW2Yk>VJYs|6h=&w{;jJjlYo?3 z-vkt;0G02i$O4}NS2M>}ivzZi2er_Z+coM(mr~Y?G$;!D+J<)4VSW-RMjX4NlTA0L zq{qJHl8A5a-$hDVv%XZ7l)gDO_t&NrB3(_NrRil(Sw|K8SUL5TAG?)85ncAg!nsmMKsZc&4t3k|}!|%|{fZ zv|rgI>2cHCRJz|ZH!J(2RK^c!C@1$vsr2k=D69IToZjEfqZ)zroD@SX zBx+-=ewo)Oqc_#jr!h+t_v6NPr@|MyDQ{GZq zV9Hxc`%8ICX?-bgDQz$1Ev4n9yrop2l()3ec$%AP1xk5Wt<$ORDK$FvJyo4Pl`=Sh zN;$D_rF1F`>!-t~>T9erWG(FX?nHfso>)=sgi|i7sGkmd%b`hCztq$Fy*s1dyVd>P zt#{}YvrjBVW3G4T1}Ium@_Udr zz4BbRyBH-s591@Ot_ z4^d$gX7nL%Te!&=!e`ffrD&AQ1AN1bCe=CUeZ)j`9#p;A7nvArTvQrs%<;*>#0pf) zqcWl@fL~2ZXt?OWCQ7?NI&UU7`b#HPOwnky1=G@4Wsa#DE0klWsU}UGStgZN@_h3c zIX+mS((em2emI4ILbMggx&S$omJ!Un&+ugSlm{@UfDkQbX1NN2&5&6%4U) z&Gv=D`0icm!q%#N6}}AUZT7{HlFQ&IEU#v(%HK8sg{nK|2mB5F8&%)^p{~vJwFVr2PQ*}1HwuoGh(e?lNos5NaR3-3r0~j6L0zfsLjVV(8;O}MR;@xL6X?BRYKl3* z&;oQXG4GV*GGgg59n{*_;tgw!K51pWjK2A3T`zsVKRgkiEv0t)29LZeuHPS?u^?py z({9i7dC@bZ8dymUlLn#-@V)1<0KWg8WP#+22jntw-v*a@aGYvb8VKU!wEajqTHDD9 zStcQDMZvb2$|vvjy<3%T_#JGkNgABvF8aQ*GC6*0_lEF=-&hstCrgwDY>ZZ8=8RQM z)c(0gn`KrP$zRsVa5^aiT%eI$Lq28`9Q#&tG}@!;LueH|PxZ0VCHa@swF#3abr7VC zjs`?rT{d@$T5uX&lDE$+G-0udQ$M-PG9Y%U8tFK-24Rd;ZI-npsmY@D;nTby@<>{? zrjRcj3_!8O-uPJ6+%Oy25mkWfDYY5(z$n!EB8diGS@i2fm|n6uWzUHU!!5)uuH!H% z*xHJbU_TD$XdQ|ybt>DZ-ODL(^5TJph0akwiU?zNlBx?sU9Oj_bVN|5FG=2oivvfS z2gTm8vH6D}LA6puE;Gd(`mxYmtt^qm5od}lOp!ei?5I9O*GeKmo7f|E4wY21%nJGY zI`w0rI{8O}Q`#cFW;{%e*I#waEr-aFpt>gB=k~GaQ##sGubas^Ye)OPeqP9_)t(8;d)4DH+3bO?b9G&{~p;kH4w^>XBqNsZlCE!K37(d+^;yhVBtlpL^KiGbz}<$U7ff z4Y>Ls5%5Q^BbFWcyfn7)Jq=E>m;@e)D}xFLy^IL9>eu_*nu4kd`g`;(@E0;&N4z*@j|z{ua?JyXC2z`KA` z_Zq}_z%;;BfTe)-fFA>nd)*)=0&W5P3~$q3 z_5w!#0kQz=0s8?LzF`n;fQ^860Jb*`q8so6VEBH>0$dCDK45ed?-K)_2OI`i{)jvS zb^%8G348(T0B-=sAHaLXfL8${{)~5m0jmJ70*rsbd!~RV0eb+W-om@YfJXuE0GtO6 zq7(2WU_W5!|3MGHe86(RKEQwK_xL*o(FK?bC;`|2p8*U7`~`JkCBnxM_5z**FC5w03%>9;Ei9S zi~$<}D*?3tCtxe!NPfS37xe=0SHQmj!_cNj0>%JLfN6j_Kmf2C<*@-cD*zF|On?(G z0x%5lufM_n0QLc11#AaA59kFv4!9q%0&o*xF<>ibLI_&`b%2?Gsep+9C%^FXZLH4p_<2?sR$srC3ac&%HSxx}49jv349&fnH-w?u!9>`H+IBtLLgPckoF9L1s?JMOmx=EfRfOAYdp4hun33ufA9^plp z_qUE~RFC&qC17&Axr1e%rXWrhX$twUfl|E`b80O0R^=QJoMM79ug5m!1$dw@?Z#5) zYjqDXAARmn%kzeKI@%h%9nCF~`lL0-%gW@A%{vBr>gOgc2V7Rh>adD;lxcrGDlv*v z3dK$3^}4%wKiCne4>r}~9Rln-PQ33J!Q%^*+x#lA>$ zAUI#y&kY1U-lVeXvf0cLY71XVAk9OAJ>I}V@1k&hTM(tvS=xX%78*Juy2Unam#P?S z@SvjNw7h&)ebxLhj$rUbO4YMQfIPXZOrMT?naj%X7cZb%5s|N;8!MSV!sA&CO$P~Q>u}p*-hRCLp%%pjaX~y%UZU) ziZu7}&ev4=_9o66LQBytjc2obtvYj@`GdAJKw9FQ`)q{6s&J#R z(qV1C&)^Bq?`UlwIIpq_TJaUoLzyEb7kfe9=Ic6Q25*4Az2nHp`Sy2Ip=To=m?>Ee z(1ewmFbnl?J`SxJD3>XC*{H0Xqa+HFJ`yGWBxi~5_h(FV3wxP>70zH(OU@f$f#}wA6qbQ9RWoaByVX`z(7%vL}oiotYBy5mLnryyy&wc zWN$lMKVr&ArHz%&)l+3Mp*H?6)tNoBLCmGHcHE?|k6B65>f|(d37l2Y6)Ur>s97)B zzK3H3Y}ZOVTS{fdU2W&lG@N?NzonP6jURX9{5ZWAe)xVl7g5GU1JDSQC>FH17h3z+H-@x_GBeVt379<_DpHl)t;=V zp=bScS#Mv0JF}J5vvIUo(G^FNI!5h=x5!HOb+qssaB2xI#A{uP20W;h!wwX|kRhJ%qJfWzLC$&VIam>C3IrF% zDrfdtA-VVk?8=(m-%5{Vwkc-6GI0jhhQg%a8YG;e(lMcyPOp?6^7|a4W9F=^t>}?5 zEv7st%cak<2QsSE!k@^t3|0CrZ6rdSUmiK%vNG9{ z4#D2dI0GPFk+W^aN(WLum26(oN=bJk((&S958^8tR(fs{ z&v4{@Ki|s}RW-9GRhw<5a(OItxoGvZHnfBUPRnMjwH;qEkg@hf=;ayXOT9RgyBnC+})wYC!3oEp3s`&B(@R3{@!n?o9c_1MxzLiHg znA;1S>8*;W$MH{%0bj@lK~SL$r-3UPu&CvJw0c!iJzweRSMCZSKlE!AoY6s5U7gP zd3^K0;14(YoBa{dHY5^+D@FExB(QZj0P_0A`OV_`AqyMA5_cl>zyk)EY8_nP8pnB2 zp}NVL)%eCcCwec0DRC199(9#Fmql)<(pe{)C3SKsEvlY)iy-cWO= z5UXf;f5Z>lUlY6KYwPrff^Drh!vNo1NWj3^XkGqDeS}*lh4|gz`VgKs;b}>zUcJ+V zhZ)>8jd3|@o3EiG;?r&^MEju&Y7&Pdr}l6H{pEhW17E*yK|o<6hJg)C8qo`-5slukQ@E<0($02{(U~SC3A00S+;U zv=H|XxDK}m{1G+bI+lpavjZA)g|Jb!>zl+RRy3uWiwT1&SOF(t#O_Cd*5C{sW?%H? zP4js>eSOj|&*N%_V(_G!Wo?Z$?S5=c#RyKEG^kvjzLkU{P8w3soP!0AY2YfT;Ujr@$)=Grj(>Pv>*?=T&tCBL0bsBEH(-9Dk#45)P6V?+($TwZYhZ z@z9W2ZHnhIm^v4JwI4bi|S&wOY;4lEjywvw9H>RU*%* z@0#x0$pgp0gd!d7Q_wlh5tW8ZJA9!<)xJZS(ZL@}@M3Gj*x(y>K5$ z6n~I>a(ESnDFQ;D40w0P6PEfxO{Gl+4h$vil!U_pN81b$hy61IA9}Y}ew^=JBS{MqeA2 zvN6Xl9zCnJa-4It5zoZi8odE5ffSEkGC zT;L0hHg@>S8aNj(9^K>(gngq++!JEF6NzK|br^l5yC)>*>YfnGG|1f(G<%l(2P#5N zWX=K~1q;Bb=R=R>o^77P9z;r&>oKNs({xkBgb#4aKB2O>xwy0Bu9E#F|0;RXv)h9Y zZ{i!7LX0xaHZ3%L%T#G@Hs5Hz+x#g@wWZF|X}Qbt9m|g_mDX14E!JOH=h#-**4Uo3 zy<+>D?Sz7x3LYu=VZpBoI_>w_Pjl2eS3B1^H##>v-*6sZcy8gU!lw#fE{qm7xo&nn z0mbZp&m#t!17iV0qZ`Gs`(vyY(?^#J1D6*EZX}!oJ47-oDAc#lGEsoMW8h^NvN1 z>mBDg7dwX*mKIJcY%08^@E?VrDk?2%D(WeEt7t^=E5&&we=a%2^E~a-t#pE)HC<;q z&0KA+Gq;!{=5F(H^J?=t^G5S#^EUHN^Ldsc%PcATElZwtj`euk|JiB_nhLrKmKMBU zu*$x}zQ?}b{tiBfI@~eO@g>K-j?Io=ICeQ+bG+*q=KQ>KIc&1Sd3vF#u%d8k;mpFT z3VRAS7j7%uS%?pk%Ko;~eusUP<55Sa^A4xoHP`is>$k4cin@yKDte;m1ot`a2i?!Q zf8{n87o*&6F5XzYr+9zy8zrCcO!jno)-xY#1-_+h00-)0r!UCWu)+iXh;q6JlsnT{(RO^zjwFFS4l{VwMr=Q)Kng^|Kn3eR*o zT$j2YbN$5ixuU5>jYXS_UMu=z(Fk|3yTu)GuPWJ8vZciCsrAhB?DD+h!N*crJuwiu z$+XV2(KN%-Zdq*ktgX~G&Gxr~k@hk6mmP;324|=1Ue^uawXJBE`+fIci^rDOO5SIl zcL;p{6}p*5n2qL(%ue&e=Iv&OtS7Ur5o@<~xplSmINL?GwYF`jE#?Ay!Nh{81uX@w z1tFAOlk-MrXW@f|0oO{`TGs~G#qQ6$gYNT+Cl_xn{zdV-#h)noLdlAfLnQ`Jndd6c zYR@{)M$cx--HR1+1do_H&8y7cG(T_tsre=I85XPMI#~IKmV=hVmZ8=W)=FE0ZI|Ou zjv>xb&YRFCe&l?`X($|1cvIo&E}QEzS2N^pa?LJ^6y06)NYT!scZz1a-*6j>FDP~t zHx@4`KCfg_$*z*OOK$Sq;}Hk(jcmxYo2HtcH2v5#+kBPzUGp$YljRGRJ1rZ~GOw_9 zAiuk8Z`*Dvc)Vby{SEs+><>Ghc2qjAaCSKDsCUEMCijos2i?KqCyJj(8)ztbxa66V zw@PMv7I@Zrp7XrUyy3~=V*DL!`lM-s=?&9AOmCR~VQ#WqW7%c-qm&Z1K4?AJR&IL$ z7M)PgSnzDYI|X+8RMe+u>@Pv;O^$nHt^bnq-NG|mR#%nlO4m~4beHQr*V#o=(DvUf zI>lY+e%sAy9@Ze|7xBG17UKbF_1; z)8<~{-sv7wd{gmvinkXF;~?2qoVHzac@-?Pm z=2`F`Tg^Mnd(68mZ(IIm9bq%t{vh-6GVCSn7ZeAIA1HpRcniGIp<+Wxe#xkk&w9L` z8)=8qLHIs0-up3q-tx4gS}9k9Dc^JpTH7~weS%VE zXPJ6Tn@!tHJ575{2TWrv#g;b9eU_QlMb=f;C*YUgwdEI#Dfm3<%6R+f4zuIyj{T0m zxmt?8T(lc}4emSK>(T2>MtR*(@^$Lgt=Q#MlMQcvJ!jfw8e-lAkN=kWIO{4~ukD|< zPZo?V2o~H}a8JSSq)+N`obD`g&ULmquZP#P7JjGD=K7T@zi3p^*diNxnQ28$?#1pE z?uXsR;?m-2#XlrJ*tY!9KfU1@&~-g-Cc{9*e^j?bWs<~iCNi&4`bb2yxrz;>S~ zEHA7stSf9OTwK^)xTJ7t;d0sYzUw-p=+&ZV(YwfdzWX%yXW;`p?tpupd!xIuxUKk) z#p6q!Ecs2zcRauLh_!>*9f}fDBQ(0&{6+MFo6Ns4-)h-m8EzeE9b+|F-PXz0TI)^L z$E`zc7Tb>s4EB8cDEnA@rTq$f2U`F87y+zueBbd~$0p~6s2PsJ8HHCAzTorf$#a7M{FE~H}derS+<+~=6CR^@!^({mND>h zH(NeoohSYIu9Ejk>d|)$l4FEQQvr(h;pNCQS~KPWiaUS^+V@3t?u zuePtl2;|$2Rqjph-R_4=o-PsjgYn&VJUKMIYC6y2ve>Ottq)tDwtl_fVdvA%N$$z+ zT3GNJ_jT~D%iO!*bFTC>c!HjVo;%TFJ>YrB^E1y&p5J=jqz#RO#Q_9EOv6kkn@%&G zY-XQ5)?8`61f#Cm<|oa+HBXQ_zhU{4mb0v*t>;_ESue9*X}!uCvaYb+X}!m~ z*7}3E8J62k~h1TyH~^Se&78A_cr&> z+{mP9u=L-jn;aN(&o}LoHTiUFu{8>}G!kc^&UjKYY zg=4B?hGUk);+*FUIFBnlzwj#XTjwe$vU_UCXWn4Zh~N#&Y4F@<*lx5vX4`JtjnV&P z)TA{9|5xC$e-U}n#=++~E^*Yu6Flm8+_}$r(0Lf6@oyBqTKGvRXwLfewpL)qQ&qZ=gPKoyjtrAmy9Vf zmAFfqN|u)NmVDad^jzv`#zcjtms(d^zi++Hw%)eMcD%jQewTeZeCtwZ-|P6LV-UsGwH#(aYLAb3;oC)eAB<#uk>&8SNPp9&td-^|1Ult zObRXuUWHAM2FHR#cwsm$%nUtL?e*ae;fk;}Tp8XU_JwbSAB2C3dc8d*(ax7k&bYXlLhj)dDfhW3W#uS2cBrac~U*2UQoY@&wNsStd^q7f8^coZGt(T@_rr7 zSXWA{6<3N4sF@A=ZuIF5#`o!Dn=vA@%njzV<~3HCwbS~Yb&Y+q{Zpp{#9XI3)Gqb7 z_kwrG`_NnCZ}fNhulvoxHkf&L&>Pf*4}|N&pM{TvyTjw*r{U*eq9-Nh#EZlf^l-6Q zBr2Kb6WT@k4`h|RL*6ZKPc|oC#pzvPFR*Lv2D?0-$gQ}QJ~i1Z^M39<4KkeaMp5?4 zFZHYaKhcqlAS);gRIoT$9^4zO2_EGcUI|9%PFYwNt_mLvH-)c9y%p9<4u0;Wx|g`$aOZ#{weHJqH!g6{y_z0$agG5n@B3b( z_lmbA=Im3kVl75Bj0TC}l$eJrMN91AR^cz3(Mr3_7tMWOvSlr_daVV?70ER*V!i2} zbfTLuk;*4#5{Uxw zZS+Yr*&o2br%~GtxUjd-@VR=SZsWoF@VaY_4tVbqbDTBZn$OSw=j8t6aB_^(KWuMh zn)}eM)11QprI(tV^-hb^>eRcf?sgRRkZY(iRZebDrIzEx?^O-zA=QN5ZdIGrR`s;% zM0t1NXkJsj=*xFeHz(9ET5C+Dcvx} z>fg$=u0kcA^%Yude{cpTa92E&4~9R5OE+>Ce#QBp4WAER4)=$@3*SJ|zZ1S6ei(j) zZi>BdW-6bj!@Y@%#dy5i*Tv;xnz&MEaF8#q7T1dJiW|h=i<`s`#BE}QxSPCVwOA{D zCLR|5A|4Y@h-buexPran74ds_bY5@{ z!L$?IDX!yQS0oYe+xbdE(|AyQ^Vd21$#0a4nGMKxv7axW@dxfjFWs`yo6hLTU^VtmT5O> z)!K)6J&B%Kh|jxM|B2qB|5D$AhwjslqCCdOy2FZf?hlPRu>fdXyy*Vcy-pRY z1!|F6qAJzx>Q1$iSy-!@NiH_2C&;MwsJ-eH^@e(z`+r82dF3ERmABlhMIEm3eu6XI zNQU(U*!{e>*L%%-0~hw5_Z2_ip9d!X+TZKHiwhnfe1&YsC-+zu)YAEOQ1Llxb&8n) zi)W`skx$}caX&Zr2~x`4_{m9HKHOfUU5~Hyj7pSZ23VM7UPdN40vi`ue`no-H~B5- z_b&Q;Mp94Snykg!{vz24=Scf1`&zrqz6C$`AQ-j9K4>4dkJ)GJ8=ckEtjt|T9X684 z?RNKqi-+8I-4EOgaNb{6C7?sCTBS~^KdV&l%ibh!hG*cf=6ZK}*ZIwUhksX)68=qi zc{q#zLFB@?m2~{6@Htd52PsbFbGQ6|GEpeX#m~i7X7DA^8>cRL+7;UOa9@`hxyE#( z(9jLr2#g{Wc(Jj-SY#~Wq|3;-?jhw`gD+|(>3Y;?H=Z=M8#|3X#y;Z!sYRc0)EM9f zpMq~kjn9oVIZkHEi83eV-M@u3T=eKQDAM^jrGJnWRIXayDeL5YvQhq%TrYn?cJ{dJ zkUQ|gFUf9sQ1-|-ne1b7NdAW$k!NMXyvWQjCz#ph6rA@=Q;@QGW}+NC;%xCbt5Xx} z`TgZE*d5|&@xJ(mR!TZKqD|Eo==bZ}Nz5jbvV2W0kyB00{0=$KQdspM3C=9Lg5+$_ zoAw-H=FWqNIbscptQ*hSL3vLOTd9Kqz9tlmNDK*hbji%u%pM}$A@+1#v9Vm?nq$R7- zH|L(@9y)v!#-C4zcE}U*Vrsqw6xe5;HuJ3c)_v9vD?hnB`5W>tX>Ww*&e-2_mN}0& z-A;<@QoCmNUrBgVl+G+St9|M)sxr@;kAvIho$x03SNY5RC;eXBoF6RV33;gPsqs#s zU37~QEbRwNd4D8-r(CNb%|G{Zw=+x8PwOI;tF~*{4%DO7 z8cF5{)ex9ffEp8EPch!VGOR`uH<7D%gk9`WUPBw73P-^o-rEO8XOaU5Zp|FjUr1&*T)KI4_wnvHZ@4PHZ0O(j~hLy9q$%us6cf7HlC%2Qx9;`G)`Ec&&K;MBLA)> z0k78^$m`d`NV`a0hM0~KeUwZ&lT5jQ3`UZ|lo(Y;wb8)jH=%i3j8yk~$_GAaXwv(MmUouh5J7(!kRK29UpqIZlN~{Kd}sQ@LGI1SxjkGt@0sQ9q=^iXC2~YQ zm>*?HMO2|AzDHHup*mFUI9Vki7`Kg+jq1NDA8Uf`6U z$uySY2HNPrfuJWi5)81d9F9Ckn2vwV4s*i--VkJ?2Ir8Xm9kYjH@Wp;Bh%Z0&)&+$ zW>-AJJs`tC#JSbHN0dIyWoDyl_lZ#wl?;%i6tt*{)4XWs*QrNUAExRFBiiLuFmJVZ z%MPQ5DH}8-b+5ny)-q91ZqN@O{&(eTsCtvxVs=vb$a&dJ&D<|0rV|&Ip3Ed2EMjX> zO3Khd%Fu=L9g5vaJ{e&H{-l${VUW#Qnv=oCs1TP{#4fXhgtvmcXFJ=&ZggD2%|yQy zqTNc}a#ULlnav(|z)h%hm8r5-E}67YHmURxI5NVyC<8A*pLE0>806O5Ya#hd{o{3a0tHSJ<*geO37PA8;M1PYQ^Atgz2sEuCx<$?E}-Id?iBg zbdb#h*%DpUJjUY&Fh30(?*z>}R7^dUER;3mvuS27x3=7DFx%Pi43I1H4>B)|HAM75 VrSreeSKxdF&R5`k1^({}{1=7VK>Gjy literal 0 HcmV?d00001 diff --git a/SFML/bin/sfml-system-2.dll b/SFML/bin/sfml-system-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..9187313bd5579b868e4f79497abbb7b906d3dcb3 GIT binary patch literal 43008 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 literal 0 HcmV?d00001 diff --git a/SFML/bin/sfml-system-d-2.dll b/SFML/bin/sfml-system-d-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..d70b142934423e667e4e6f5aa9965cb0c28869df GIT binary patch literal 188928 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%0AAzPT=L) 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 literal 0 HcmV?d00001 diff --git a/SFML/bin/sfml-window-2.dll b/SFML/bin/sfml-window-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..c8f637b7b7b8729fae5ac0cb05a3fa40ff9e5f88 GIT binary patch literal 99840 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 MB;+#RLB$!tEV_mo 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

    OVdWTNadAn7+V$#=bPi1|& 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 tFvc(con9(PBk3YTXl^rP*+*R3= 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�sM$YCm12b9b?9NXPD`u!(MA=88j&^G5)y4-a#K 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 literal 0 HcmV?d00001 diff --git a/SFML/doc/html/AlResource_8hpp_source.html b/SFML/doc/html/AlResource_8hpp_source.html new file mode 100644 index 0000000..0a438f8 --- /dev/null +++ b/SFML/doc/html/AlResource_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + +

    + +
    +
    +
    AlResource.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_ALRESOURCE_HPP
    26 #define SFML_ALRESOURCE_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    40 class SFML_AUDIO_API AlResource
    41 {
    42 protected:
    43 
    48  AlResource();
    49 
    54  ~AlResource();
    55 };
    56 
    57 } // namespace sf
    58 
    59 
    60 #endif // SFML_ALRESOURCE_HPP
    61 
    Base class for classes that require an OpenAL context.
    Definition: AlResource.hpp:40
    + +
    + + + + diff --git a/SFML/doc/html/Audio_2Export_8hpp_source.html b/SFML/doc/html/Audio_2Export_8hpp_source.html new file mode 100644 index 0000000..28f8b2f --- /dev/null +++ b/SFML/doc/html/Audio_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Audio/Export.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_AUDIO_EXPORT_HPP
    26 #define SFML_AUDIO_EXPORT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    35 // Define portable import / export macros
    37 #if defined(SFML_AUDIO_EXPORTS)
    38 
    39  #define SFML_AUDIO_API SFML_API_EXPORT
    40 
    41 #else
    42 
    43  #define SFML_AUDIO_API SFML_API_IMPORT
    44 
    45 #endif
    46 
    47 
    48 #endif // SFML_AUDIO_EXPORT_HPP
    + + + + diff --git a/SFML/doc/html/Audio_8hpp_source.html b/SFML/doc/html/Audio_8hpp_source.html new file mode 100644 index 0000000..f91aeb2 --- /dev/null +++ b/SFML/doc/html/Audio_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Audio.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_AUDIO_HPP
    26 #define SFML_AUDIO_HPP
    27 
    29 // Headers
    31 
    32 #include <SFML/System.hpp>
    33 #include <SFML/Audio/InputSoundFile.hpp>
    34 #include <SFML/Audio/Listener.hpp>
    35 #include <SFML/Audio/Music.hpp>
    36 #include <SFML/Audio/OutputSoundFile.hpp>
    37 #include <SFML/Audio/Sound.hpp>
    38 #include <SFML/Audio/SoundBuffer.hpp>
    39 #include <SFML/Audio/SoundBufferRecorder.hpp>
    40 #include <SFML/Audio/SoundFileFactory.hpp>
    41 #include <SFML/Audio/SoundFileReader.hpp>
    42 #include <SFML/Audio/SoundFileWriter.hpp>
    43 #include <SFML/Audio/SoundRecorder.hpp>
    44 #include <SFML/Audio/SoundSource.hpp>
    45 #include <SFML/Audio/SoundStream.hpp>
    46 
    47 
    48 #endif // SFML_AUDIO_HPP
    49 
    + + + + diff --git a/SFML/doc/html/BlendMode_8hpp_source.html b/SFML/doc/html/BlendMode_8hpp_source.html new file mode 100644 index 0000000..006cfd4 --- /dev/null +++ b/SFML/doc/html/BlendMode_8hpp_source.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    BlendMode.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_BLENDMODE_HPP
    26 #define SFML_BLENDMODE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    36 
    41 struct SFML_GRAPHICS_API BlendMode
    42 {
    49  enum Factor
    50  {
    51  Zero,
    52  One,
    60  OneMinusDstAlpha
    61  };
    62 
    69  enum Equation
    70  {
    71  Add,
    73  ReverseSubtract
    74  };
    75 
    82  BlendMode();
    83 
    95  BlendMode(Factor sourceFactor, Factor destinationFactor, Equation blendEquation = Add);
    96 
    108  BlendMode(Factor colorSourceFactor, Factor colorDestinationFactor,
    109  Equation colorBlendEquation, Factor alphaSourceFactor,
    110  Factor alphaDestinationFactor, Equation alphaBlendEquation);
    111 
    113  // Member Data
    121 };
    122 
    133 SFML_GRAPHICS_API bool operator ==(const BlendMode& left, const BlendMode& right);
    134 
    145 SFML_GRAPHICS_API bool operator !=(const BlendMode& left, const BlendMode& right);
    146 
    148 // Commonly used blending modes
    150 SFML_GRAPHICS_API extern const BlendMode BlendAlpha;
    151 SFML_GRAPHICS_API extern const BlendMode BlendAdd;
    152 SFML_GRAPHICS_API extern const BlendMode BlendMultiply;
    153 SFML_GRAPHICS_API extern const BlendMode BlendNone;
    154 
    155 } // namespace sf
    156 
    157 
    158 #endif // SFML_BLENDMODE_HPP
    159 
    160 
    Equation colorEquation
    Blending equation for the color channels.
    Definition: BlendMode.hpp:117
    +
    (src.a, src.a, src.a, src.a)
    Definition: BlendMode.hpp:57
    +
    Factor alphaSrcFactor
    Source blending factor for the alpha channel.
    Definition: BlendMode.hpp:118
    +
    (0, 0, 0, 0)
    Definition: BlendMode.hpp:51
    +
    (1, 1, 1, 1) - (dst.r, dst.g, dst.b, dst.a)
    Definition: BlendMode.hpp:56
    +
    Blending modes for drawing.
    Definition: BlendMode.hpp:41
    +
    (1, 1, 1, 1)
    Definition: BlendMode.hpp:52
    +
    Factor colorSrcFactor
    Source blending factor for the color channels.
    Definition: BlendMode.hpp:115
    +
    Equation alphaEquation
    Blending equation for the alpha channel.
    Definition: BlendMode.hpp:120
    +
    Pixel = Src * SrcFactor - Dst * DstFactor.
    Definition: BlendMode.hpp:72
    +
    Factor colorDstFactor
    Destination blending factor for the color channels.
    Definition: BlendMode.hpp:116
    +
    Pixel = Src * SrcFactor + Dst * DstFactor.
    Definition: BlendMode.hpp:71
    +
    (dst.a, dst.a, dst.a, dst.a)
    Definition: BlendMode.hpp:59
    +
    (1, 1, 1, 1) - (src.a, src.a, src.a, src.a)
    Definition: BlendMode.hpp:58
    +
    (1, 1, 1, 1) - (src.r, src.g, src.b, src.a)
    Definition: BlendMode.hpp:54
    +
    Equation
    Enumeration of the blending equations.
    Definition: BlendMode.hpp:69
    + +
    Factor
    Enumeration of the blending factors.
    Definition: BlendMode.hpp:49
    +
    Factor alphaDstFactor
    Destination blending factor for the alpha channel.
    Definition: BlendMode.hpp:119
    +
    (dst.r, dst.g, dst.b, dst.a)
    Definition: BlendMode.hpp:55
    +
    (src.r, src.g, src.b, src.a)
    Definition: BlendMode.hpp:53
    +
    + + + + diff --git a/SFML/doc/html/CircleShape_8hpp_source.html b/SFML/doc/html/CircleShape_8hpp_source.html new file mode 100644 index 0000000..3dbacfb --- /dev/null +++ b/SFML/doc/html/CircleShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    CircleShape.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CIRCLESHAPE_HPP
    26 #define SFML_CIRCLESHAPE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Shape.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_GRAPHICS_API CircleShape : public Shape
    42 {
    43 public:
    44 
    52  explicit CircleShape(float radius = 0, std::size_t pointCount = 30);
    53 
    62  void setRadius(float radius);
    63 
    72  float getRadius() const;
    73 
    82  void setPointCount(std::size_t count);
    83 
    92  virtual std::size_t getPointCount() const;
    93 
    107  virtual Vector2f getPoint(std::size_t index) const;
    108 
    109 private:
    110 
    112  // Member data
    114  float m_radius;
    115  std::size_t m_pointCount;
    116 };
    117 
    118 } // namespace sf
    119 
    120 
    121 #endif // SFML_CIRCLESHAPE_HPP
    122 
    123 
    Base class for textured shapes with outline.
    Definition: Shape.hpp:44
    + + +
    Specialized shape representing a circle.
    Definition: CircleShape.hpp:41
    +
    + + + + diff --git a/SFML/doc/html/Clipboard_8hpp_source.html b/SFML/doc/html/Clipboard_8hpp_source.html new file mode 100644 index 0000000..4cc98f3 --- /dev/null +++ b/SFML/doc/html/Clipboard_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Clipboard.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CLIPBOARD_HPP
    26 #define SFML_CLIPBOARD_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/String.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_WINDOW_API Clipboard
    42 {
    43 public:
    44 
    55  static String getString();
    56 
    72  static void setString(const String& text);
    73 };
    74 
    75 } // namespace sf
    76 
    77 
    78 #endif // SFML_CLIPBOARD_HPP
    79 
    80 
    Give access to the system clipboard.
    Definition: Clipboard.hpp:41
    + +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    + + + + diff --git a/SFML/doc/html/Clock_8hpp_source.html b/SFML/doc/html/Clock_8hpp_source.html new file mode 100644 index 0000000..2568ec7 --- /dev/null +++ b/SFML/doc/html/Clock_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Clock.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CLOCK_HPP
    26 #define SFML_CLOCK_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/Time.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_SYSTEM_API Clock
    42 {
    43 public:
    44 
    51  Clock();
    52 
    63  Time getElapsedTime() const;
    64 
    74  Time restart();
    75 
    76 private:
    77 
    79  // Member data
    81  Time m_startTime;
    82 };
    83 
    84 } // namespace sf
    85 
    86 
    87 #endif // SFML_CLOCK_HPP
    88 
    89 
    Represents a time value.
    Definition: Time.hpp:40
    + +
    Utility class that measures the elapsed time.
    Definition: Clock.hpp:41
    +
    + + + + diff --git a/SFML/doc/html/Color_8hpp_source.html b/SFML/doc/html/Color_8hpp_source.html new file mode 100644 index 0000000..df49c5e --- /dev/null +++ b/SFML/doc/html/Color_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Color.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_COLOR_HPP
    26 #define SFML_COLOR_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    40 class SFML_GRAPHICS_API Color
    41 {
    42 public:
    43 
    51  Color();
    52 
    62  Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha = 255);
    63 
    70  explicit Color(Uint32 color);
    71 
    78  Uint32 toInteger() const;
    79 
    81  // Static member data
    83  static const Color Black;
    84  static const Color White;
    85  static const Color Red;
    86  static const Color Green;
    87  static const Color Blue;
    88  static const Color Yellow;
    89  static const Color Magenta;
    90  static const Color Cyan;
    91  static const Color Transparent;
    92 
    94  // Member data
    96  Uint8 r;
    97  Uint8 g;
    98  Uint8 b;
    99  Uint8 a;
    100 };
    101 
    114 SFML_GRAPHICS_API bool operator ==(const Color& left, const Color& right);
    115 
    128 SFML_GRAPHICS_API bool operator !=(const Color& left, const Color& right);
    129 
    143 SFML_GRAPHICS_API Color operator +(const Color& left, const Color& right);
    144 
    158 SFML_GRAPHICS_API Color operator -(const Color& left, const Color& right);
    159 
    175 SFML_GRAPHICS_API Color operator *(const Color& left, const Color& right);
    176 
    191 SFML_GRAPHICS_API Color& operator +=(Color& left, const Color& right);
    192 
    207 SFML_GRAPHICS_API Color& operator -=(Color& left, const Color& right);
    208 
    225 SFML_GRAPHICS_API Color& operator *=(Color& left, const Color& right);
    226 
    227 } // namespace sf
    228 
    229 
    230 #endif // SFML_COLOR_HPP
    231 
    232 
    static const Color Red
    Red predefined color.
    Definition: Color.hpp:85
    +
    static const Color Green
    Green predefined color.
    Definition: Color.hpp:86
    +
    Uint8 b
    Blue component.
    Definition: Color.hpp:98
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    static const Color Magenta
    Magenta predefined color.
    Definition: Color.hpp:89
    +
    Uint8 g
    Green component.
    Definition: Color.hpp:97
    +
    static const Color Cyan
    Cyan predefined color.
    Definition: Color.hpp:90
    +
    static const Color White
    White predefined color.
    Definition: Color.hpp:84
    +
    static const Color Blue
    Blue predefined color.
    Definition: Color.hpp:87
    +
    static const Color Yellow
    Yellow predefined color.
    Definition: Color.hpp:88
    +
    static const Color Black
    Black predefined color.
    Definition: Color.hpp:83
    + +
    Uint8 a
    Alpha (opacity) component.
    Definition: Color.hpp:99
    +
    static const Color Transparent
    Transparent (black) predefined color.
    Definition: Color.hpp:91
    +
    Uint8 r
    Red component.
    Definition: Color.hpp:96
    +
    + + + + diff --git a/SFML/doc/html/Config_8hpp_source.html b/SFML/doc/html/Config_8hpp_source.html new file mode 100644 index 0000000..5734d34 --- /dev/null +++ b/SFML/doc/html/Config_8hpp_source.html @@ -0,0 +1,57 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Config.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CONFIG_HPP
    26 #define SFML_CONFIG_HPP
    27 
    28 
    30 // Define the SFML version
    32 #define SFML_VERSION_MAJOR 2
    33 #define SFML_VERSION_MINOR 5
    34 #define SFML_VERSION_PATCH 1
    35 
    36 
    38 // Identify the operating system
    39 // see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
    41 #if defined(_WIN32)
    42 
    43  // Windows
    44  #define SFML_SYSTEM_WINDOWS
    45  #ifndef NOMINMAX
    46  #define NOMINMAX
    47  #endif
    48 
    49 #elif defined(__APPLE__) && defined(__MACH__)
    50 
    51  // Apple platform, see which one it is
    52  #include "TargetConditionals.h"
    53 
    54  #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
    55 
    56  // iOS
    57  #define SFML_SYSTEM_IOS
    58 
    59  #elif TARGET_OS_MAC
    60 
    61  // MacOS
    62  #define SFML_SYSTEM_MACOS
    63 
    64  #else
    65 
    66  // Unsupported Apple system
    67  #error This Apple operating system is not supported by SFML library
    68 
    69  #endif
    70 
    71 #elif defined(__unix__)
    72 
    73  // UNIX system, see which one it is
    74  #if defined(__ANDROID__)
    75 
    76  // Android
    77  #define SFML_SYSTEM_ANDROID
    78 
    79  #elif defined(__linux__)
    80 
    81  // Linux
    82  #define SFML_SYSTEM_LINUX
    83 
    84  #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
    85 
    86  // FreeBSD
    87  #define SFML_SYSTEM_FREEBSD
    88 
    89  #elif defined(__OpenBSD__)
    90 
    91  // OpenBSD
    92  #define SFML_SYSTEM_OPENBSD
    93 
    94  #else
    95 
    96  // Unsupported UNIX system
    97  #error This UNIX operating system is not supported by SFML library
    98 
    99  #endif
    100 
    101 #else
    102 
    103  // Unsupported system
    104  #error This operating system is not supported by SFML library
    105 
    106 #endif
    107 
    108 
    110 // Define a portable debug macro
    112 #if !defined(NDEBUG)
    113 
    114  #define SFML_DEBUG
    115 
    116 #endif
    117 
    118 
    120 // Define helpers to create portable import / export macros for each module
    122 #if !defined(SFML_STATIC)
    123 
    124  #if defined(SFML_SYSTEM_WINDOWS)
    125 
    126  // Windows compilers need specific (and different) keywords for export and import
    127  #define SFML_API_EXPORT __declspec(dllexport)
    128  #define SFML_API_IMPORT __declspec(dllimport)
    129 
    130  // For Visual C++ compilers, we also need to turn off this annoying C4251 warning
    131  #ifdef _MSC_VER
    132 
    133  #pragma warning(disable: 4251)
    134 
    135  #endif
    136 
    137  #else // Linux, FreeBSD, Mac OS X
    138 
    139  #if __GNUC__ >= 4
    140 
    141  // GCC 4 has special keywords for showing/hidding symbols,
    142  // the same keyword is used for both importing and exporting
    143  #define SFML_API_EXPORT __attribute__ ((__visibility__ ("default")))
    144  #define SFML_API_IMPORT __attribute__ ((__visibility__ ("default")))
    145 
    146  #else
    147 
    148  // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported
    149  #define SFML_API_EXPORT
    150  #define SFML_API_IMPORT
    151 
    152  #endif
    153 
    154  #endif
    155 
    156 #else
    157 
    158  // Static build doesn't need import/export macros
    159  #define SFML_API_EXPORT
    160  #define SFML_API_IMPORT
    161 
    162 #endif
    163 
    164 
    166 // Cross-platform warning for deprecated functions and classes
    167 //
    168 // Usage:
    169 // class SFML_DEPRECATED MyClass
    170 // {
    171 // SFML_DEPRECATED void memberFunc();
    172 // };
    173 //
    174 // SFML_DEPRECATED void globalFunc();
    176 #if defined(SFML_NO_DEPRECATED_WARNINGS)
    177 
    178  // User explicitly requests to disable deprecation warnings
    179  #define SFML_DEPRECATED
    180 
    181 #elif defined(_MSC_VER)
    182 
    183  // Microsoft C++ compiler
    184  // Note: On newer MSVC versions, using deprecated functions causes a compiler error. In order to
    185  // trigger a warning instead of an error, the compiler flag /sdl- (instead of /sdl) must be specified.
    186  #define SFML_DEPRECATED __declspec(deprecated)
    187 
    188 #elif defined(__GNUC__)
    189 
    190  // g++ and Clang
    191  #define SFML_DEPRECATED __attribute__ ((deprecated))
    192 
    193 #else
    194 
    195  // Other compilers are not supported, leave class or function as-is.
    196  // With a bit of luck, the #pragma directive works, otherwise users get a warning (no error!) for unrecognized #pragma.
    197  #pragma message("SFML_DEPRECATED is not supported for your compiler, please contact the SFML team")
    198  #define SFML_DEPRECATED
    199 
    200 #endif
    201 
    202 
    204 // Define portable fixed-size types
    206 namespace sf
    207 {
    208  // All "common" platforms use the same size for char, short and int
    209  // (basically there are 3 types for 3 sizes, so no other match is possible),
    210  // we can use them without doing any kind of check
    211 
    212  // 8 bits integer types
    213  typedef signed char Int8;
    214  typedef unsigned char Uint8;
    215 
    216  // 16 bits integer types
    217  typedef signed short Int16;
    218  typedef unsigned short Uint16;
    219 
    220  // 32 bits integer types
    221  typedef signed int Int32;
    222  typedef unsigned int Uint32;
    223 
    224  // 64 bits integer types
    225  #if defined(_MSC_VER)
    226  typedef signed __int64 Int64;
    227  typedef unsigned __int64 Uint64;
    228  #else
    229  typedef signed long long Int64;
    230  typedef unsigned long long Uint64;
    231  #endif
    232 
    233 } // namespace sf
    234 
    235 
    236 #endif // SFML_CONFIG_HPP
    +
    + + + + diff --git a/SFML/doc/html/ContextSettings_8hpp_source.html b/SFML/doc/html/ContextSettings_8hpp_source.html new file mode 100644 index 0000000..03304c6 --- /dev/null +++ b/SFML/doc/html/ContextSettings_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    ContextSettings.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CONTEXTSETTINGS_HPP
    26 #define SFML_CONTEXTSETTINGS_HPP
    27 
    28 #include <SFML/Config.hpp>
    29 
    30 namespace sf
    31 {
    38 {
    43  enum Attribute
    44  {
    45  Default = 0,
    46  Core = 1 << 0,
    47  Debug = 1 << 2
    48  };
    49 
    62  explicit ContextSettings(unsigned int depth = 0, unsigned int stencil = 0, unsigned int antialiasing = 0, unsigned int major = 1, unsigned int minor = 1, unsigned int attributes = Default, bool sRgb = false) :
    63  depthBits (depth),
    64  stencilBits (stencil),
    65  antialiasingLevel(antialiasing),
    66  majorVersion (major),
    67  minorVersion (minor),
    68  attributeFlags (attributes),
    69  sRgbCapable (sRgb)
    70  {
    71  }
    72 
    74  // Member data
    76  unsigned int depthBits;
    77  unsigned int stencilBits;
    78  unsigned int antialiasingLevel;
    79  unsigned int majorVersion;
    80  unsigned int minorVersion;
    81  Uint32 attributeFlags;
    82  bool sRgbCapable;
    83 };
    84 
    85 } // namespace sf
    86 
    87 
    88 #endif // SFML_CONTEXTSETTINGS_HPP
    89 
    90 
    +
    Uint32 attributeFlags
    The attribute flags to create the context with.
    +
    bool sRgbCapable
    Whether the context framebuffer is sRGB capable.
    +
    Attribute
    Enumeration of the context attribute flags.
    + +
    Non-debug, compatibility context (this and the core attribute are mutually exclusive) ...
    +
    unsigned int depthBits
    Bits of the depth buffer.
    +
    Structure defining the settings of the OpenGL context attached to a window.
    + +
    ContextSettings(unsigned int depth=0, unsigned int stencil=0, unsigned int antialiasing=0, unsigned int major=1, unsigned int minor=1, unsigned int attributes=Default, bool sRgb=false)
    Default constructor.
    +
    unsigned int majorVersion
    Major number of the context version to create.
    +
    unsigned int antialiasingLevel
    Level of antialiasing.
    +
    unsigned int stencilBits
    Bits of the stencil buffer.
    +
    unsigned int minorVersion
    Minor number of the context version to create.
    +
    + + + + diff --git a/SFML/doc/html/Context_8hpp_source.html b/SFML/doc/html/Context_8hpp_source.html new file mode 100644 index 0000000..6b6fc89 --- /dev/null +++ b/SFML/doc/html/Context_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Context.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CONTEXT_HPP
    26 #define SFML_CONTEXT_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/Window/GlResource.hpp>
    33 #include <SFML/Window/ContextSettings.hpp>
    34 #include <SFML/System/NonCopyable.hpp>
    35 
    36 
    37 namespace sf
    38 {
    39 namespace priv
    40 {
    41  class GlContext;
    42 }
    43 
    44 typedef void (*GlFunctionPointer)();
    45 
    50 class SFML_WINDOW_API Context : GlResource, NonCopyable
    51 {
    52 public:
    53 
    60  Context();
    61 
    68  ~Context();
    69 
    78  bool setActive(bool active);
    79 
    90  const ContextSettings& getSettings() const;
    91 
    100  static bool isExtensionAvailable(const char* name);
    101 
    110  static GlFunctionPointer getFunction(const char* name);
    111 
    122  static const Context* getActiveContext();
    123 
    133  static Uint64 getActiveContextId();
    134 
    146  Context(const ContextSettings& settings, unsigned int width, unsigned int height);
    147 
    148 private:
    149 
    151  // Member data
    153  priv::GlContext* m_context;
    154 };
    155 
    156 } // namespace sf
    157 
    158 
    159 #endif // SFML_CONTEXT_HPP
    160 
    Class holding a valid drawing context.
    Definition: Context.hpp:50
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    Structure defining the settings of the OpenGL context attached to a window.
    + +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/ConvexShape_8hpp_source.html b/SFML/doc/html/ConvexShape_8hpp_source.html new file mode 100644 index 0000000..dea71a4 --- /dev/null +++ b/SFML/doc/html/ConvexShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    ConvexShape.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CONVEXSHAPE_HPP
    26 #define SFML_CONVEXSHAPE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Shape.hpp>
    33 #include <vector>
    34 
    35 
    36 namespace sf
    37 {
    42 class SFML_GRAPHICS_API ConvexShape : public Shape
    43 {
    44 public:
    45 
    52  explicit ConvexShape(std::size_t pointCount = 0);
    53 
    64  void setPointCount(std::size_t count);
    65 
    74  virtual std::size_t getPointCount() const;
    75 
    91  void setPoint(std::size_t index, const Vector2f& point);
    92 
    108  virtual Vector2f getPoint(std::size_t index) const;
    109 
    110 private:
    111 
    113  // Member data
    115  std::vector<Vector2f> m_points;
    116 };
    117 
    118 } // namespace sf
    119 
    120 
    121 #endif // SFML_CONVEXSHAPE_HPP
    122 
    123 
    Base class for textured shapes with outline.
    Definition: Shape.hpp:44
    +
    Specialized shape representing a convex polygon.
    Definition: ConvexShape.hpp:42
    + +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    + + + + diff --git a/SFML/doc/html/Cursor_8hpp_source.html b/SFML/doc/html/Cursor_8hpp_source.html new file mode 100644 index 0000000..33413f3 --- /dev/null +++ b/SFML/doc/html/Cursor_8hpp_source.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Cursor.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_CURSOR_HPP
    26 #define SFML_CURSOR_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 #include <SFML/System/Vector2.hpp>
    34 
    35 namespace sf
    36 {
    37 namespace priv
    38 {
    39  class CursorImpl;
    40 }
    41 
    46 class SFML_WINDOW_API Cursor : NonCopyable
    47 {
    48 public:
    49 
    76  enum Type
    77  {
    80  Wait,
    81  Text,
    82  Hand,
    89  Help,
    90  NotAllowed
    91  };
    92 
    93 public:
    94 
    104  Cursor();
    105 
    113  ~Cursor();
    114 
    144  bool loadFromPixels(const Uint8* pixels, Vector2u size, Vector2u hotspot);
    145 
    160  bool loadFromSystem(Type type);
    161 
    162 private:
    163 
    164  friend class Window;
    165 
    175  const priv::CursorImpl& getImpl() const;
    176 
    177 private:
    178 
    180  // Member data
    182  priv::CursorImpl* m_impl;
    183 };
    184 
    185 } // namespace sf
    186 
    187 
    188 #endif // SFML_CURSOR_HPP
    189 
    190 
    Crosshair cursor.
    Definition: Cursor.hpp:88
    +
    Busy cursor.
    Definition: Cursor.hpp:80
    +
    Window that serves as a target for OpenGL rendering.
    +
    Cursor defines the appearance of a system cursor.
    Definition: Cursor.hpp:46
    +
    Horizontal double arrow cursor.
    Definition: Cursor.hpp:83
    +
    Busy arrow cursor.
    Definition: Cursor.hpp:79
    +
    Arrow cursor (default)
    Definition: Cursor.hpp:78
    +
    Double arrow cursor going from top-left to bottom-right.
    Definition: Cursor.hpp:85
    +
    Double arrow cursor going from bottom-left to top-right.
    Definition: Cursor.hpp:86
    +
    I-beam, cursor when hovering over a field allowing text entry.
    Definition: Cursor.hpp:81
    +
    Help cursor.
    Definition: Cursor.hpp:89
    +
    Type
    Enumeration of the native system cursor types.
    Definition: Cursor.hpp:76
    +
    Combination of SizeHorizontal and SizeVertical.
    Definition: Cursor.hpp:87
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    Pointing hand cursor.
    Definition: Cursor.hpp:82
    + + +
    Vertical double arrow cursor.
    Definition: Cursor.hpp:84
    +
    + + + + diff --git a/SFML/doc/html/Drawable_8hpp_source.html b/SFML/doc/html/Drawable_8hpp_source.html new file mode 100644 index 0000000..5e44831 --- /dev/null +++ b/SFML/doc/html/Drawable_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Drawable.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_DRAWABLE_HPP
    26 #define SFML_DRAWABLE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/RenderStates.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 class RenderTarget;
    38 
    44 class SFML_GRAPHICS_API Drawable
    45 {
    46 public:
    47 
    52  virtual ~Drawable() {}
    53 
    54 protected:
    55 
    56  friend class RenderTarget;
    57 
    69  virtual void draw(RenderTarget& target, RenderStates states) const = 0;
    70 };
    71 
    72 } // namespace sf
    73 
    74 
    75 #endif // SFML_DRAWABLE_HPP
    76 
    77 
    virtual ~Drawable()
    Virtual destructor.
    Definition: Drawable.hpp:52
    +
    Define the states used for drawing to a RenderTarget.
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + +
    + + + + diff --git a/SFML/doc/html/Err_8hpp_source.html b/SFML/doc/html/Err_8hpp_source.html new file mode 100644 index 0000000..0a473ee --- /dev/null +++ b/SFML/doc/html/Err_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Err.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_ERR_HPP
    26 #define SFML_ERR_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <ostream>
    33 
    34 
    35 namespace sf
    36 {
    41 SFML_SYSTEM_API std::ostream& err();
    42 
    43 } // namespace sf
    44 
    45 
    46 #endif // SFML_ERR_HPP
    47 
    48 
    std::ostream & err()
    Standard stream used by SFML to output warnings and errors.
    + +
    + + + + diff --git a/SFML/doc/html/Event_8hpp_source.html b/SFML/doc/html/Event_8hpp_source.html new file mode 100644 index 0000000..aaae108 --- /dev/null +++ b/SFML/doc/html/Event_8hpp_source.html @@ -0,0 +1,146 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Event.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_EVENT_HPP
    26 #define SFML_EVENT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 #include <SFML/Window/Joystick.hpp>
    33 #include <SFML/Window/Keyboard.hpp>
    34 #include <SFML/Window/Mouse.hpp>
    35 #include <SFML/Window/Sensor.hpp>
    36 
    37 
    38 namespace sf
    39 {
    44 class Event
    45 {
    46 public:
    47 
    52  struct SizeEvent
    53  {
    54  unsigned int width;
    55  unsigned int height;
    56  };
    57 
    62  struct KeyEvent
    63  {
    65  bool alt;
    66  bool control;
    67  bool shift;
    68  bool system;
    69  };
    70 
    75  struct TextEvent
    76  {
    77  Uint32 unicode;
    78  };
    79 
    85  {
    86  int x;
    87  int y;
    88  };
    89 
    96  {
    98  int x;
    99  int y;
    100  };
    101 
    110  {
    111  int delta;
    112  int x;
    113  int y;
    114  };
    115 
    121  {
    123  float delta;
    124  int x;
    125  int y;
    126  };
    127 
    134  {
    135  unsigned int joystickId;
    136  };
    137 
    143  {
    144  unsigned int joystickId;
    146  float position;
    147  };
    148 
    155  {
    156  unsigned int joystickId;
    157  unsigned int button;
    158  };
    159 
    164  struct TouchEvent
    165  {
    166  unsigned int finger;
    167  int x;
    168  int y;
    169  };
    170 
    175  struct SensorEvent
    176  {
    178  float x;
    179  float y;
    180  float z;
    181  };
    182 
    188  {
    212 
    214  };
    215 
    217  // Member data
    220 
    221  union
    222  {
    235  };
    236 };
    237 
    238 } // namespace sf
    239 
    240 
    241 #endif // SFML_EVENT_HPP
    242 
    243 
    Keyboard::Key code
    Code of the key that has been pressed.
    Definition: Event.hpp:64
    +
    float delta
    Wheel offset (positive is up/left, negative is down/right). High-precision mice may use non-integral ...
    Definition: Event.hpp:123
    +
    A joystick button was pressed (data in event.joystickButton)
    Definition: Event.hpp:203
    +
    A joystick was disconnected (data in event.joystickConnect)
    Definition: Event.hpp:207
    +
    int y
    Y position of the mouse pointer, relative to the top of the owner window.
    Definition: Event.hpp:113
    +
    The window lost the focus (no data)
    Definition: Event.hpp:191
    +
    int x
    X position of the mouse pointer, relative to the left of the owner window.
    Definition: Event.hpp:98
    +
    Joystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased) ...
    Definition: Event.hpp:154
    +
    The mouse cursor moved (data in event.mouseMove)
    Definition: Event.hpp:200
    +
    Keep last – the total number of event types.
    Definition: Event.hpp:213
    +
    Keyboard event parameters (KeyPressed, KeyReleased)
    Definition: Event.hpp:62
    +
    unsigned int joystickId
    Index of the joystick (in range [0 .. Joystick::Count - 1])
    Definition: Event.hpp:144
    +
    A joystick was connected (data in event.joystickConnect)
    Definition: Event.hpp:206
    +
    A touch event ended (data in event.touch)
    Definition: Event.hpp:210
    +
    int y
    Y position of the mouse pointer, relative to the top of the owner window.
    Definition: Event.hpp:87
    +
    Mouse move event parameters (MouseMoved)
    Definition: Event.hpp:84
    +
    A character was entered (data in event.text)
    Definition: Event.hpp:193
    +
    int x
    X position of the touch, relative to the left of the owner window.
    Definition: Event.hpp:167
    +
    bool alt
    Is the Alt key pressed?
    Definition: Event.hpp:65
    +
    unsigned int height
    New height, in pixels.
    Definition: Event.hpp:55
    +
    KeyEvent key
    Key event parameters (Event::KeyPressed, Event::KeyReleased)
    Definition: Event.hpp:224
    +
    The window gained the focus (no data)
    Definition: Event.hpp:192
    +
    float y
    Current value of the sensor on Y axis.
    Definition: Event.hpp:179
    +
    Sensor event parameters (SensorChanged)
    Definition: Event.hpp:175
    +
    SensorEvent sensor
    Sensor event parameters (Event::SensorChanged)
    Definition: Event.hpp:234
    +
    A touch event began (data in event.touch)
    Definition: Event.hpp:208
    +
    TextEvent text
    Text event parameters (Event::TextEntered)
    Definition: Event.hpp:225
    +
    TouchEvent touch
    Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded) ...
    Definition: Event.hpp:233
    +
    Axis
    Axes supported by SFML joysticks.
    Definition: Joystick.hpp:60
    +
    Type
    Sensor type.
    Definition: Sensor.hpp:50
    +
    A key was released (data in event.key)
    Definition: Event.hpp:195
    +
    The window was resized (data in event.size)
    Definition: Event.hpp:190
    +
    unsigned int width
    New width, in pixels.
    Definition: Event.hpp:54
    +
    The window requested to be closed (no data)
    Definition: Event.hpp:189
    +
    MouseButtonEvent mouseButton
    Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased) ...
    Definition: Event.hpp:227
    +
    The mouse cursor left the area of the window (no data)
    Definition: Event.hpp:202
    +
    int delta
    Number of ticks the wheel has moved (positive is up, negative is down)
    Definition: Event.hpp:111
    +
    Touch events parameters (TouchBegan, TouchMoved, TouchEnded)
    Definition: Event.hpp:164
    +
    The mouse wheel was scrolled (data in event.mouseWheelScroll)
    Definition: Event.hpp:197
    +
    A mouse button was pressed (data in event.mouseButton)
    Definition: Event.hpp:198
    +
    int x
    X position of the mouse pointer, relative to the left of the owner window.
    Definition: Event.hpp:124
    +
    The mouse wheel was scrolled (data in event.mouseWheel) (deprecated)
    Definition: Event.hpp:196
    +
    Joystick axis move event parameters (JoystickMoved)
    Definition: Event.hpp:142
    +
    JoystickMoveEvent joystickMove
    Joystick move event parameters (Event::JoystickMoved)
    Definition: Event.hpp:230
    +
    Wheel
    Mouse wheels.
    Definition: Mouse.hpp:66
    +
    Mouse wheel events parameters (MouseWheelMoved)
    Definition: Event.hpp:109
    +
    Joystick::Axis axis
    Axis on which the joystick moved.
    Definition: Event.hpp:145
    +
    Key
    Key codes.
    Definition: Keyboard.hpp:48
    +
    int y
    Y position of the touch, relative to the top of the owner window.
    Definition: Event.hpp:168
    +
    Mouse::Wheel wheel
    Which wheel (for mice with multiple ones)
    Definition: Event.hpp:122
    +
    Mouse buttons events parameters (MouseButtonPressed, MouseButtonReleased)
    Definition: Event.hpp:95
    +
    bool shift
    Is the Shift key pressed?
    Definition: Event.hpp:67
    +
    Defines a system event and its parameters.
    Definition: Event.hpp:44
    +
    Button
    Mouse buttons.
    Definition: Mouse.hpp:51
    +
    Uint32 unicode
    UTF-32 Unicode value of the character.
    Definition: Event.hpp:77
    +
    JoystickConnectEvent joystickConnect
    Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected) ...
    Definition: Event.hpp:232
    +
    MouseWheelEvent mouseWheel
    Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated)
    Definition: Event.hpp:228
    +
    The mouse cursor entered the area of the window (no data)
    Definition: Event.hpp:201
    +
    A key was pressed (data in event.key)
    Definition: Event.hpp:194
    +
    MouseWheelScrollEvent mouseWheelScroll
    Mouse wheel event parameters (Event::MouseWheelScrolled)
    Definition: Event.hpp:229
    +
    Mouse::Button button
    Code of the button that has been pressed.
    Definition: Event.hpp:97
    +
    bool system
    Is the System key pressed?
    Definition: Event.hpp:68
    +
    int x
    X position of the mouse pointer, relative to the left of the owner window.
    Definition: Event.hpp:112
    +
    EventType type
    Type of the event.
    Definition: Event.hpp:219
    +
    int y
    Y position of the mouse pointer, relative to the top of the owner window.
    Definition: Event.hpp:99
    +
    bool control
    Is the Control key pressed?
    Definition: Event.hpp:66
    +
    A mouse button was released (data in event.mouseButton)
    Definition: Event.hpp:199
    +
    Joystick connection events parameters (JoystickConnected, JoystickDisconnected)
    Definition: Event.hpp:133
    + +
    MouseMoveEvent mouseMove
    Mouse move event parameters (Event::MouseMoved)
    Definition: Event.hpp:226
    +
    unsigned int joystickId
    Index of the joystick (in range [0 .. Joystick::Count - 1])
    Definition: Event.hpp:156
    +
    The joystick moved along an axis (data in event.joystickMove)
    Definition: Event.hpp:205
    +
    unsigned int finger
    Index of the finger in case of multi-touch events.
    Definition: Event.hpp:166
    +
    A joystick button was released (data in event.joystickButton)
    Definition: Event.hpp:204
    +
    unsigned int joystickId
    Index of the joystick (in range [0 .. Joystick::Count - 1])
    Definition: Event.hpp:135
    +
    int x
    X position of the mouse pointer, relative to the left of the owner window.
    Definition: Event.hpp:86
    +
    Text event parameters (TextEntered)
    Definition: Event.hpp:75
    +
    JoystickButtonEvent joystickButton
    Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased) ...
    Definition: Event.hpp:231
    +
    float x
    Current value of the sensor on X axis.
    Definition: Event.hpp:178
    +
    float position
    New position on the axis (in range [-100 .. 100])
    Definition: Event.hpp:146
    +
    A touch moved (data in event.touch)
    Definition: Event.hpp:209
    +
    int y
    Y position of the mouse pointer, relative to the top of the owner window.
    Definition: Event.hpp:125
    +
    A sensor value changed (data in event.sensor)
    Definition: Event.hpp:211
    +
    Sensor::Type type
    Type of the sensor.
    Definition: Event.hpp:177
    +
    SizeEvent size
    Size event parameters (Event::Resized)
    Definition: Event.hpp:223
    +
    Size events parameters (Resized)
    Definition: Event.hpp:52
    +
    Mouse wheel events parameters (MouseWheelScrolled)
    Definition: Event.hpp:120
    +
    unsigned int button
    Index of the button that has been pressed (in range [0 .. Joystick::ButtonCount - 1]) ...
    Definition: Event.hpp:157
    +
    float z
    Current value of the sensor on Z axis.
    Definition: Event.hpp:180
    +
    EventType
    Enumeration of the different types of events.
    Definition: Event.hpp:187
    +
    + + + + diff --git a/SFML/doc/html/FileInputStream_8hpp_source.html b/SFML/doc/html/FileInputStream_8hpp_source.html new file mode 100644 index 0000000..7fe4c19 --- /dev/null +++ b/SFML/doc/html/FileInputStream_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    FileInputStream.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_FILEINPUTSTREAM_HPP
    26 #define SFML_FILEINPUTSTREAM_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 #include <SFML/System/Export.hpp>
    33 #include <SFML/System/InputStream.hpp>
    34 #include <SFML/System/NonCopyable.hpp>
    35 #include <cstdio>
    36 #include <string>
    37 
    38 #ifdef SFML_SYSTEM_ANDROID
    39 namespace sf
    40 {
    41 namespace priv
    42 {
    43 class SFML_SYSTEM_API ResourceStream;
    44 }
    45 }
    46 #endif
    47 
    48 
    49 namespace sf
    50 {
    55 class SFML_SYSTEM_API FileInputStream : public InputStream, NonCopyable
    56 {
    57 public:
    63 
    68  virtual ~FileInputStream();
    69 
    78  bool open(const std::string& filename);
    79 
    92  virtual Int64 read(void* data, Int64 size);
    93 
    102  virtual Int64 seek(Int64 position);
    103 
    110  virtual Int64 tell();
    111 
    118  virtual Int64 getSize();
    119 
    120 private:
    121 
    123  // Member data
    125 #ifdef SFML_SYSTEM_ANDROID
    126  priv::ResourceStream* m_file;
    127 #else
    128  std::FILE* m_file;
    129 #endif
    130 };
    131 
    132 } // namespace sf
    133 
    134 
    135 #endif // SFML_FILEINPUTSTREAM_HPP
    136 
    137 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Implementation of input stream based on a file.
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    + + + + diff --git a/SFML/doc/html/Font_8hpp_source.html b/SFML/doc/html/Font_8hpp_source.html new file mode 100644 index 0000000..d39d3c0 --- /dev/null +++ b/SFML/doc/html/Font_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Font.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_FONT_HPP
    26 #define SFML_FONT_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Glyph.hpp>
    33 #include <SFML/Graphics/Texture.hpp>
    34 #include <SFML/Graphics/Rect.hpp>
    35 #include <SFML/System/Vector2.hpp>
    36 #include <SFML/System/String.hpp>
    37 #include <map>
    38 #include <string>
    39 #include <vector>
    40 
    41 
    42 namespace sf
    43 {
    44 class InputStream;
    45 
    50 class SFML_GRAPHICS_API Font
    51 {
    52 public:
    53 
    58  struct Info
    59  {
    60  std::string family;
    61  };
    62 
    63 public:
    64 
    71  Font();
    72 
    79  Font(const Font& copy);
    80 
    87  ~Font();
    88 
    109  bool loadFromFile(const std::string& filename);
    110 
    130  bool loadFromMemory(const void* data, std::size_t sizeInBytes);
    131 
    152  bool loadFromStream(InputStream& stream);
    153 
    160  const Info& getInfo() const;
    161 
    180  const Glyph& getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness = 0) const;
    181 
    198  float getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const;
    199 
    211  float getLineSpacing(unsigned int characterSize) const;
    212 
    226  float getUnderlinePosition(unsigned int characterSize) const;
    227 
    240  float getUnderlineThickness(unsigned int characterSize) const;
    241 
    254  const Texture& getTexture(unsigned int characterSize) const;
    255 
    264  Font& operator =(const Font& right);
    265 
    266 private:
    267 
    272  struct Row
    273  {
    274  Row(unsigned int rowTop, unsigned int rowHeight) : width(0), top(rowTop), height(rowHeight) {}
    275 
    276  unsigned int width;
    277  unsigned int top;
    278  unsigned int height;
    279  };
    280 
    282  // Types
    284  typedef std::map<Uint64, Glyph> GlyphTable;
    285 
    290  struct Page
    291  {
    292  Page();
    293 
    294  GlyphTable glyphs;
    295  Texture texture;
    296  unsigned int nextRow;
    297  std::vector<Row> rows;
    298  };
    299 
    304  void cleanup();
    305 
    317  Glyph loadGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness) const;
    318 
    329  IntRect findGlyphRect(Page& page, unsigned int width, unsigned int height) const;
    330 
    339  bool setCurrentSize(unsigned int characterSize) const;
    340 
    342  // Types
    344  typedef std::map<unsigned int, Page> PageTable;
    345 
    347  // Member data
    349  void* m_library;
    350  void* m_face;
    351  void* m_streamRec;
    352  void* m_stroker;
    353  int* m_refCount;
    354  Info m_info;
    355  mutable PageTable m_pages;
    356  mutable std::vector<Uint8> m_pixelBuffer;
    357  #ifdef SFML_SYSTEM_ANDROID
    358  void* m_stream;
    359  #endif
    360 };
    361 
    362 } // namespace sf
    363 
    364 
    365 #endif // SFML_FONT_HPP
    366 
    367 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    Structure describing a glyph.
    Definition: Glyph.hpp:41
    + +
    Class for loading and manipulating character fonts.
    Definition: Font.hpp:50
    +
    std::string family
    The font family.
    Definition: Font.hpp:60
    +
    Holds various information about a font.
    Definition: Font.hpp:58
    +
    + + + + diff --git a/SFML/doc/html/Ftp_8hpp_source.html b/SFML/doc/html/Ftp_8hpp_source.html new file mode 100644 index 0000000..b9c1b94 --- /dev/null +++ b/SFML/doc/html/Ftp_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Ftp.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_FTP_HPP
    26 #define SFML_FTP_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/TcpSocket.hpp>
    33 #include <SFML/System/NonCopyable.hpp>
    34 #include <SFML/System/Time.hpp>
    35 #include <string>
    36 #include <vector>
    37 
    38 
    39 namespace sf
    40 {
    41 class IpAddress;
    42 
    47 class SFML_NETWORK_API Ftp : NonCopyable
    48 {
    49 public:
    50 
    56  {
    59  Ebcdic
    60  };
    61 
    66  class SFML_NETWORK_API Response
    67  {
    68  public:
    69 
    74  enum Status
    75  {
    76  // 1xx: the requested action is being initiated,
    77  // expect another reply before proceeding with a new command
    78  RestartMarkerReply = 110,
    79  ServiceReadySoon = 120,
    80  DataConnectionAlreadyOpened = 125,
    81  OpeningDataConnection = 150,
    82 
    83  // 2xx: the requested action has been successfully completed
    84  Ok = 200,
    85  PointlessCommand = 202,
    86  SystemStatus = 211,
    87  DirectoryStatus = 212,
    88  FileStatus = 213,
    89  HelpMessage = 214,
    90  SystemType = 215,
    91  ServiceReady = 220,
    92  ClosingConnection = 221,
    93  DataConnectionOpened = 225,
    94  ClosingDataConnection = 226,
    95  EnteringPassiveMode = 227,
    96  LoggedIn = 230,
    97  FileActionOk = 250,
    98  DirectoryOk = 257,
    99 
    100  // 3xx: the command has been accepted, but the requested action
    101  // is dormant, pending receipt of further information
    102  NeedPassword = 331,
    103  NeedAccountToLogIn = 332,
    104  NeedInformation = 350,
    105 
    106  // 4xx: the command was not accepted and the requested action did not take place,
    107  // but the error condition is temporary and the action may be requested again
    108  ServiceUnavailable = 421,
    109  DataConnectionUnavailable = 425,
    110  TransferAborted = 426,
    111  FileActionAborted = 450,
    112  LocalError = 451,
    113  InsufficientStorageSpace = 452,
    114 
    115  // 5xx: the command was not accepted and
    116  // the requested action did not take place
    117  CommandUnknown = 500,
    118  ParametersUnknown = 501,
    119  CommandNotImplemented = 502,
    120  BadCommandSequence = 503,
    121  ParameterNotImplemented = 504,
    122  NotLoggedIn = 530,
    123  NeedAccountToStore = 532,
    124  FileUnavailable = 550,
    125  PageTypeUnknown = 551,
    126  NotEnoughMemory = 552,
    127  FilenameNotAllowed = 553,
    128 
    129  // 10xx: SFML custom codes
    130  InvalidResponse = 1000,
    131  ConnectionFailed = 1001,
    132  ConnectionClosed = 1002,
    133  InvalidFile = 1003
    134  };
    135 
    146  explicit Response(Status code = InvalidResponse, const std::string& message = "");
    147 
    157  bool isOk() const;
    158 
    165  Status getStatus() const;
    166 
    173  const std::string& getMessage() const;
    174 
    175  private:
    176 
    178  // Member data
    180  Status m_status;
    181  std::string m_message;
    182  };
    183 
    188  class SFML_NETWORK_API DirectoryResponse : public Response
    189  {
    190  public:
    191 
    198  DirectoryResponse(const Response& response);
    199 
    206  const std::string& getDirectory() const;
    207 
    208  private:
    209 
    211  // Member data
    213  std::string m_directory;
    214  };
    215 
    216 
    221  class SFML_NETWORK_API ListingResponse : public Response
    222  {
    223  public:
    224 
    232  ListingResponse(const Response& response, const std::string& data);
    233 
    240  const std::vector<std::string>& getListing() const;
    241 
    242  private:
    243 
    245  // Member data
    247  std::vector<std::string> m_listing;
    248  };
    249 
    250 
    258  ~Ftp();
    259 
    281  Response connect(const IpAddress& server, unsigned short port = 21, Time timeout = Time::Zero);
    282 
    291  Response disconnect();
    292 
    302  Response login();
    303 
    316  Response login(const std::string& name, const std::string& password);
    317 
    327  Response keepAlive();
    328 
    340  DirectoryResponse getWorkingDirectory();
    341 
    357  ListingResponse getDirectoryListing(const std::string& directory = "");
    358 
    371  Response changeDirectory(const std::string& directory);
    372 
    381  Response parentDirectory();
    382 
    396  Response createDirectory(const std::string& name);
    397 
    413  Response deleteDirectory(const std::string& name);
    414 
    429  Response renameFile(const std::string& file, const std::string& newName);
    430 
    446  Response deleteFile(const std::string& name);
    447 
    468  Response download(const std::string& remoteFile, const std::string& localPath, TransferMode mode = Binary);
    469 
    491  Response upload(const std::string& localFile, const std::string& remotePath, TransferMode mode = Binary, bool append = false);
    492 
    509  Response sendCommand(const std::string& command, const std::string& parameter = "");
    510 
    511 private:
    512 
    522  Response getResponse();
    523 
    529  class DataChannel;
    530 
    531  friend class DataChannel;
    532 
    534  // Member data
    536  TcpSocket m_commandSocket;
    537  std::string m_receiveBuffer;
    538 };
    539 
    540 } // namespace sf
    541 
    542 
    543 #endif // SFML_FTP_HPP
    544 
    545 
    Specialization of FTP response returning a directory.
    Definition: Ftp.hpp:188
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    A FTP client.
    Definition: Ftp.hpp:47
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    +
    Define a FTP response.
    Definition: Ftp.hpp:66
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    +
    Specialization of FTP response returning a filename listing.
    Definition: Ftp.hpp:221
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    TransferMode
    Enumeration of transfer modes.
    Definition: Ftp.hpp:55
    +
    Specialized socket using the TCP protocol.
    Definition: TcpSocket.hpp:46
    +
    Text mode using ASCII encoding.
    Definition: Ftp.hpp:58
    +
    Binary mode (file is transfered as a sequence of bytes)
    Definition: Ftp.hpp:57
    + +
    Status
    Status codes possibly returned by a FTP response.
    Definition: Ftp.hpp:74
    +
    + + + + diff --git a/SFML/doc/html/GlResource_8hpp_source.html b/SFML/doc/html/GlResource_8hpp_source.html new file mode 100644 index 0000000..c6b7f40 --- /dev/null +++ b/SFML/doc/html/GlResource_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    GlResource.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GLRESOURCE_HPP
    26 #define SFML_GLRESOURCE_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 
    38 class Context;
    39 
    40 typedef void(*ContextDestroyCallback)(void*);
    41 
    46 class SFML_WINDOW_API GlResource
    47 {
    48 protected:
    49 
    54  GlResource();
    55 
    60  ~GlResource();
    61 
    73  static void registerContextDestroyCallback(ContextDestroyCallback callback, void* arg);
    74 
    79  class SFML_WINDOW_API TransientContextLock : NonCopyable
    80  {
    81  public:
    87 
    93  };
    94 };
    95 
    96 } // namespace sf
    97 
    98 
    99 #endif // SFML_GLRESOURCE_HPP
    100 
    RAII helper class to temporarily lock an available context for use.
    Definition: GlResource.hpp:79
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/Glsl_8hpp_source.html b/SFML/doc/html/Glsl_8hpp_source.html new file mode 100644 index 0000000..432908a --- /dev/null +++ b/SFML/doc/html/Glsl_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Glsl.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GLSL_HPP
    26 #define SFML_GLSL_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Transform.hpp>
    32 #include <SFML/Graphics/Color.hpp>
    33 #include <SFML/System/Vector2.hpp>
    34 #include <SFML/System/Vector3.hpp>
    35 
    36 
    37 namespace sf
    38 {
    39 namespace priv
    40 {
    41  // Forward declarations
    42  template <std::size_t Columns, std::size_t Rows>
    43  struct Matrix;
    44 
    45  template <typename T>
    46  struct Vector4;
    47 
    48 #include <SFML/Graphics/Glsl.inl>
    49 
    50 } // namespace priv
    51 
    52 
    57 namespace Glsl
    58 {
    59 
    65 
    71 
    77 
    83 
    89 
    95 
    96 #ifdef SFML_DOXYGEN
    97 
    110  typedef implementation-defined Vec4;
    111 
    124  typedef implementation-defined Ivec4;
    125 
    130  typedef implementation-defined Bvec4;
    131 
    155  typedef implementation-defined Mat3;
    156 
    181  typedef implementation-defined Mat4;
    182 
    183 #else // SFML_DOXYGEN
    184 
    185  typedef priv::Vector4<float> Vec4;
    186  typedef priv::Vector4<int> Ivec4;
    187  typedef priv::Vector4<bool> Bvec4;
    188  typedef priv::Matrix<3, 3> Mat3;
    189  typedef priv::Matrix<4, 4> Mat4;
    190 
    191 #endif // SFML_DOXYGEN
    192 
    193 } // namespace Glsl
    194 } // namespace sf
    195 
    196 #endif // SFML_GLSL_HPP
    197 
    198 
    implementation defined Bvec4
    4D bool vector (bvec4 in GLSL)
    Definition: Glsl.hpp:130
    +
    Vector2< float > Vec2
    2D float vector (vec2 in GLSL)
    Definition: Glsl.hpp:64
    +
    implementation defined Ivec4
    4D int vector (ivec4 in GLSL)
    Definition: Glsl.hpp:124
    +
    Vector3< float > Vec3
    3D float vector (vec3 in GLSL)
    Definition: Glsl.hpp:82
    +
    implementation defined Mat4
    4x4 float matrix (mat4 in GLSL)
    Definition: Glsl.hpp:181
    +
    Vector3< bool > Bvec3
    3D bool vector (bvec3 in GLSL)
    Definition: Glsl.hpp:94
    +
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    implementation defined Vec4
    4D float vector (vec4 in GLSL)
    Definition: Glsl.hpp:110
    +
    implementation defined Mat3
    3x3 float matrix (mat3 in GLSL)
    Definition: Glsl.hpp:155
    +
    Vector2< bool > Bvec2
    2D bool vector (bvec2 in GLSL)
    Definition: Glsl.hpp:76
    +
    Vector2< int > Ivec2
    2D int vector (ivec2 in GLSL)
    Definition: Glsl.hpp:70
    + + +
    Vector3< int > Ivec3
    3D int vector (ivec3 in GLSL)
    Definition: Glsl.hpp:88
    +
    + + + + diff --git a/SFML/doc/html/Glyph_8hpp_source.html b/SFML/doc/html/Glyph_8hpp_source.html new file mode 100644 index 0000000..94154ad --- /dev/null +++ b/SFML/doc/html/Glyph_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Glyph.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GLYPH_HPP
    26 #define SFML_GLYPH_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Rect.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_GRAPHICS_API Glyph
    42 {
    43 public:
    44 
    49  Glyph() : advance(0) {}
    50 
    52  // Member data
    54  float advance;
    57 };
    58 
    59 } // namespace sf
    60 
    61 
    62 #endif // SFML_GLYPH_HPP
    63 
    64 
    IntRect textureRect
    Texture coordinates of the glyph inside the font&#39;s texture.
    Definition: Glyph.hpp:56
    +
    Glyph()
    Default constructor.
    Definition: Glyph.hpp:49
    +
    float advance
    Offset to move horizontally to the next character.
    Definition: Glyph.hpp:54
    +
    Structure describing a glyph.
    Definition: Glyph.hpp:41
    +
    FloatRect bounds
    Bounding rectangle of the glyph, in coordinates relative to the baseline.
    Definition: Glyph.hpp:55
    + + +
    + + + + diff --git a/SFML/doc/html/GpuPreference_8hpp.html b/SFML/doc/html/GpuPreference_8hpp.html new file mode 100644 index 0000000..beeb1d6 --- /dev/null +++ b/SFML/doc/html/GpuPreference_8hpp.html @@ -0,0 +1,98 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    GpuPreference.hpp File Reference
    +
    +
    + +

    Headers. +More...

    +
    #include <SFML/Config.hpp>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Macros

    #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
     A macro to encourage usage of the discrete GPU. More...
     
    +

    Detailed Description

    +

    Headers.

    +

    File containing SFML_DEFINE_DISCRETE_GPU_PREFERENCE

    + +

    Definition in file GpuPreference.hpp.

    +

    Macro Definition Documentation

    + +

    ◆ SFML_DEFINE_DISCRETE_GPU_PREFERENCE

    + +
    +
    + + + + +
    #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
    +
    + +

    A macro to encourage usage of the discrete GPU.

    +

    In order to inform the Nvidia/AMD driver that an SFML application could benefit from using the more powerful discrete GPU, special symbols have to be publicly exported from the final executable.

    +

    SFML defines a helper macro to easily do this.

    +

    Place SFML_DEFINE_DISCRETE_GPU_PREFERENCE in the global scope of a source file that will be linked into the final executable. Typically it is best to place it where the main function is also defined.

    + +

    Definition at line 69 of file GpuPreference.hpp.

    + +
    +
    +
    + + + + diff --git a/SFML/doc/html/GpuPreference_8hpp_source.html b/SFML/doc/html/GpuPreference_8hpp_source.html new file mode 100644 index 0000000..f7646d0 --- /dev/null +++ b/SFML/doc/html/GpuPreference_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    GpuPreference.hpp
    +
    +
    +Go to the documentation of this file.
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GPUPREFERENCE_HPP
    26 #define SFML_GPUPREFERENCE_HPP
    27 
    28 
    32 #include <SFML/Config.hpp>
    33 
    34 
    41 
    42 
    61 #if defined(SFML_SYSTEM_WINDOWS)
    62 
    63  #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE \
    64  extern "C" __declspec(dllexport) unsigned long NvOptimusEnablement = 1; \
    65  extern "C" __declspec(dllexport) unsigned long AmdPowerXpressRequestHighPerformance = 1;
    66 
    67 #else
    68 
    69  #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
    70 
    71 #endif
    72 
    73 
    74 #endif // SFML_GPUPREFERENCE_HPP
    + + + + diff --git a/SFML/doc/html/Graphics_2Export_8hpp_source.html b/SFML/doc/html/Graphics_2Export_8hpp_source.html new file mode 100644 index 0000000..fc75eb6 --- /dev/null +++ b/SFML/doc/html/Graphics_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Graphics/Export.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GRAPHICS_EXPORT_HPP
    26 #define SFML_GRAPHICS_EXPORT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    35 // Define portable import / export macros
    37 #if defined(SFML_GRAPHICS_EXPORTS)
    38 
    39  #define SFML_GRAPHICS_API SFML_API_EXPORT
    40 
    41 #else
    42 
    43  #define SFML_GRAPHICS_API SFML_API_IMPORT
    44 
    45 #endif
    46 
    47 
    48 #endif // SFML_GRAPHICS_EXPORT_HPP
    + + + + diff --git a/SFML/doc/html/Graphics_8hpp_source.html b/SFML/doc/html/Graphics_8hpp_source.html new file mode 100644 index 0000000..696886f --- /dev/null +++ b/SFML/doc/html/Graphics_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Graphics.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_GRAPHICS_HPP
    26 #define SFML_GRAPHICS_HPP
    27 
    29 // Headers
    31 
    32 #include <SFML/Window.hpp>
    33 #include <SFML/Graphics/BlendMode.hpp>
    34 #include <SFML/Graphics/CircleShape.hpp>
    35 #include <SFML/Graphics/Color.hpp>
    36 #include <SFML/Graphics/ConvexShape.hpp>
    37 #include <SFML/Graphics/Drawable.hpp>
    38 #include <SFML/Graphics/Font.hpp>
    39 #include <SFML/Graphics/Glyph.hpp>
    40 #include <SFML/Graphics/Image.hpp>
    41 #include <SFML/Graphics/PrimitiveType.hpp>
    42 #include <SFML/Graphics/Rect.hpp>
    43 #include <SFML/Graphics/RectangleShape.hpp>
    44 #include <SFML/Graphics/RenderStates.hpp>
    45 #include <SFML/Graphics/RenderTarget.hpp>
    46 #include <SFML/Graphics/RenderTexture.hpp>
    47 #include <SFML/Graphics/RenderWindow.hpp>
    48 #include <SFML/Graphics/Shader.hpp>
    49 #include <SFML/Graphics/Shape.hpp>
    50 #include <SFML/Graphics/Sprite.hpp>
    51 #include <SFML/Graphics/Text.hpp>
    52 #include <SFML/Graphics/Texture.hpp>
    53 #include <SFML/Graphics/Transform.hpp>
    54 #include <SFML/Graphics/Transformable.hpp>
    55 #include <SFML/Graphics/Vertex.hpp>
    56 #include <SFML/Graphics/VertexArray.hpp>
    57 #include <SFML/Graphics/VertexBuffer.hpp>
    58 #include <SFML/Graphics/View.hpp>
    59 
    60 
    61 #endif // SFML_GRAPHICS_HPP
    62 
    + + + + diff --git a/SFML/doc/html/Http_8hpp_source.html b/SFML/doc/html/Http_8hpp_source.html new file mode 100644 index 0000000..b6c126c --- /dev/null +++ b/SFML/doc/html/Http_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Http.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_HTTP_HPP
    26 #define SFML_HTTP_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/IpAddress.hpp>
    33 #include <SFML/Network/TcpSocket.hpp>
    34 #include <SFML/System/NonCopyable.hpp>
    35 #include <SFML/System/Time.hpp>
    36 #include <map>
    37 #include <string>
    38 
    39 
    40 namespace sf
    41 {
    46 class SFML_NETWORK_API Http : NonCopyable
    47 {
    48 public:
    49 
    54  class SFML_NETWORK_API Request
    55  {
    56  public:
    57 
    62  enum Method
    63  {
    64  Get,
    65  Post,
    66  Head,
    67  Put,
    68  Delete
    69  };
    70 
    82  Request(const std::string& uri = "/", Method method = Get, const std::string& body = "");
    83 
    97  void setField(const std::string& field, const std::string& value);
    98 
    109  void setMethod(Method method);
    110 
    121  void setUri(const std::string& uri);
    122 
    132  void setHttpVersion(unsigned int major, unsigned int minor);
    133 
    144  void setBody(const std::string& body);
    145 
    146  private:
    147 
    148  friend class Http;
    149 
    159  std::string prepare() const;
    160 
    171  bool hasField(const std::string& field) const;
    172 
    174  // Types
    176  typedef std::map<std::string, std::string> FieldTable;
    177 
    179  // Member data
    181  FieldTable m_fields;
    182  Method m_method;
    183  std::string m_uri;
    184  unsigned int m_majorVersion;
    185  unsigned int m_minorVersion;
    186  std::string m_body;
    187  };
    188 
    193  class SFML_NETWORK_API Response
    194  {
    195  public:
    196 
    201  enum Status
    202  {
    203  // 2xx: success
    204  Ok = 200,
    205  Created = 201,
    206  Accepted = 202,
    207  NoContent = 204,
    208  ResetContent = 205,
    209  PartialContent = 206,
    210 
    211  // 3xx: redirection
    212  MultipleChoices = 300,
    213  MovedPermanently = 301,
    214  MovedTemporarily = 302,
    215  NotModified = 304,
    216 
    217  // 4xx: client error
    218  BadRequest = 400,
    219  Unauthorized = 401,
    220  Forbidden = 403,
    221  NotFound = 404,
    222  RangeNotSatisfiable = 407,
    223 
    224  // 5xx: server error
    225  InternalServerError = 500,
    226  NotImplemented = 501,
    227  BadGateway = 502,
    228  ServiceNotAvailable = 503,
    229  GatewayTimeout = 504,
    230  VersionNotSupported = 505,
    231 
    232  // 10xx: SFML custom codes
    233  InvalidResponse = 1000,
    234  ConnectionFailed = 1001
    235  };
    236 
    243  Response();
    244 
    257  const std::string& getField(const std::string& field) const;
    258 
    270  Status getStatus() const;
    271 
    280  unsigned int getMajorHttpVersion() const;
    281 
    290  unsigned int getMinorHttpVersion() const;
    291 
    304  const std::string& getBody() const;
    305 
    306  private:
    307 
    308  friend class Http;
    309 
    319  void parse(const std::string& data);
    320 
    321 
    331  void parseFields(std::istream &in);
    332 
    334  // Types
    336  typedef std::map<std::string, std::string> FieldTable;
    337 
    339  // Member data
    341  FieldTable m_fields;
    342  Status m_status;
    343  unsigned int m_majorVersion;
    344  unsigned int m_minorVersion;
    345  std::string m_body;
    346  };
    347 
    352  Http();
    353 
    368  Http(const std::string& host, unsigned short port = 0);
    369 
    385  void setHost(const std::string& host, unsigned short port = 0);
    386 
    405  Response sendRequest(const Request& request, Time timeout = Time::Zero);
    406 
    407 private:
    408 
    410  // Member data
    412  TcpSocket m_connection;
    413  IpAddress m_host;
    414  std::string m_hostName;
    415  unsigned short m_port;
    416 };
    417 
    418 } // namespace sf
    419 
    420 
    421 #endif // SFML_HTTP_HPP
    422 
    423 
    Request in put mode, useful for a REST API.
    Definition: Http.hpp:67
    +
    A HTTP client.
    Definition: Http.hpp:46
    +
    Define a HTTP request.
    Definition: Http.hpp:54
    +
    Define a HTTP response.
    Definition: Http.hpp:193
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    +
    Request in get mode, standard method to retrieve a page.
    Definition: Http.hpp:64
    +
    Status
    Enumerate all the valid status codes for a response.
    Definition: Http.hpp:201
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    Method
    Enumerate the available HTTP methods for a request.
    Definition: Http.hpp:62
    +
    Specialized socket using the TCP protocol.
    Definition: TcpSocket.hpp:46
    +
    Request a page&#39;s header only.
    Definition: Http.hpp:66
    + +
    Request in post mode, usually to send data to a page.
    Definition: Http.hpp:65
    +
    + + + + diff --git a/SFML/doc/html/Image_8hpp_source.html b/SFML/doc/html/Image_8hpp_source.html new file mode 100644 index 0000000..d46b377 --- /dev/null +++ b/SFML/doc/html/Image_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Image.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_IMAGE_HPP
    26 #define SFML_IMAGE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Color.hpp>
    33 #include <SFML/Graphics/Rect.hpp>
    34 #include <string>
    35 #include <vector>
    36 
    37 
    38 namespace sf
    39 {
    40 class InputStream;
    41 
    46 class SFML_GRAPHICS_API Image
    47 {
    48 public:
    49 
    56  Image();
    57 
    62  ~Image();
    63 
    72  void create(unsigned int width, unsigned int height, const Color& color = Color(0, 0, 0));
    73 
    87  void create(unsigned int width, unsigned int height, const Uint8* pixels);
    88 
    104  bool loadFromFile(const std::string& filename);
    105 
    122  bool loadFromMemory(const void* data, std::size_t size);
    123 
    139  bool loadFromStream(InputStream& stream);
    140 
    156  bool saveToFile(const std::string& filename) const;
    157 
    164  Vector2u getSize() const;
    165 
    177  void createMaskFromColor(const Color& color, Uint8 alpha = 0);
    178 
    199  void copy(const Image& source, unsigned int destX, unsigned int destY, const IntRect& sourceRect = IntRect(0, 0, 0, 0), bool applyAlpha = false);
    200 
    215  void setPixel(unsigned int x, unsigned int y, const Color& color);
    216 
    232  Color getPixel(unsigned int x, unsigned int y) const;
    233 
    247  const Uint8* getPixelsPtr() const;
    248 
    253  void flipHorizontally();
    254 
    259  void flipVertically();
    260 
    261 private:
    262 
    264  // Member data
    266  Vector2u m_size;
    267  std::vector<Uint8> m_pixels;
    268 };
    269 
    270 } // namespace sf
    271 
    272 
    273 #endif // SFML_IMAGE_HPP
    274 
    275 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    + + + +
    Class for loading, manipulating and saving images.
    Definition: Image.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/InputSoundFile_8hpp_source.html b/SFML/doc/html/InputSoundFile_8hpp_source.html new file mode 100644 index 0000000..3604782 --- /dev/null +++ b/SFML/doc/html/InputSoundFile_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    InputSoundFile.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_INPUTSOUNDFILE_HPP
    26 #define SFML_INPUTSOUNDFILE_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 #include <SFML/System/Time.hpp>
    34 #include <string>
    35 #include <algorithm>
    36 
    37 
    38 namespace sf
    39 {
    40 class InputStream;
    41 class SoundFileReader;
    42 
    47 class SFML_AUDIO_API InputSoundFile : NonCopyable
    48 {
    49 public:
    50 
    56 
    61  ~InputSoundFile();
    62 
    74  bool openFromFile(const std::string& filename);
    75 
    88  bool openFromMemory(const void* data, std::size_t sizeInBytes);
    89 
    101  bool openFromStream(InputStream& stream);
    102 
    109  Uint64 getSampleCount() const;
    110 
    117  unsigned int getChannelCount() const;
    118 
    125  unsigned int getSampleRate() const;
    126 
    136  Time getDuration() const;
    137 
    144  Time getTimeOffset() const;
    145 
    152  Uint64 getSampleOffset() const;
    153 
    171  void seek(Uint64 sampleOffset);
    172 
    185  void seek(Time timeOffset);
    186 
    196  Uint64 read(Int16* samples, Uint64 maxCount);
    197 
    198 private:
    199 
    204  void close();
    205 
    207  // Member data
    209  SoundFileReader* m_reader;
    210  InputStream* m_stream;
    211  bool m_streamOwned;
    212  Uint64 m_sampleOffset;
    213  Uint64 m_sampleCount;
    214  unsigned int m_channelCount;
    215  unsigned int m_sampleRate;
    216 };
    217 
    218 } // namespace sf
    219 
    220 
    221 #endif // SFML_INPUTSOUNDFILE_HPP
    222 
    223 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    Provide read access to sound files.
    +
    Abstract base class for sound file decoding.
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    + + + + diff --git a/SFML/doc/html/InputStream_8hpp_source.html b/SFML/doc/html/InputStream_8hpp_source.html new file mode 100644 index 0000000..3c7333f --- /dev/null +++ b/SFML/doc/html/InputStream_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    InputStream.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_INPUTSTREAM_HPP
    26 #define SFML_INPUTSTREAM_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 #include <SFML/System/Export.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_SYSTEM_API InputStream
    42 {
    43 public:
    44 
    49  virtual ~InputStream() {}
    50 
    63  virtual Int64 read(void* data, Int64 size) = 0;
    64 
    73  virtual Int64 seek(Int64 position) = 0;
    74 
    81  virtual Int64 tell() = 0;
    82 
    89  virtual Int64 getSize() = 0;
    90 };
    91 
    92 } // namespace sf
    93 
    94 
    95 #endif // SFML_INPUTSTREAM_HPP
    96 
    97 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    virtual ~InputStream()
    Virtual destructor.
    Definition: InputStream.hpp:49
    + +
    + + + + diff --git a/SFML/doc/html/IpAddress_8hpp_source.html b/SFML/doc/html/IpAddress_8hpp_source.html new file mode 100644 index 0000000..892a5c9 --- /dev/null +++ b/SFML/doc/html/IpAddress_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    IpAddress.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_IPADDRESS_HPP
    26 #define SFML_IPADDRESS_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/System/Time.hpp>
    33 #include <istream>
    34 #include <ostream>
    35 #include <string>
    36 
    37 
    38 namespace sf
    39 {
    44 class SFML_NETWORK_API IpAddress
    45 {
    46 public:
    47 
    54  IpAddress();
    55 
    65  IpAddress(const std::string& address);
    66 
    79  IpAddress(const char* address);
    80 
    94  IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3);
    95 
    109  explicit IpAddress(Uint32 address);
    110 
    123  std::string toString() const;
    124 
    139  Uint32 toInteger() const;
    140 
    155  static IpAddress getLocalAddress();
    156 
    179  static IpAddress getPublicAddress(Time timeout = Time::Zero);
    180 
    182  // Static member data
    184  static const IpAddress None;
    185  static const IpAddress Any;
    186  static const IpAddress LocalHost;
    187  static const IpAddress Broadcast;
    188 
    189 private:
    190 
    191  friend SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right);
    192 
    199  void resolve(const std::string& address);
    200 
    202  // Member data
    204  Uint32 m_address;
    205  bool m_valid;
    206 };
    207 
    217 SFML_NETWORK_API bool operator ==(const IpAddress& left, const IpAddress& right);
    218 
    228 SFML_NETWORK_API bool operator !=(const IpAddress& left, const IpAddress& right);
    229 
    239 SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right);
    240 
    250 SFML_NETWORK_API bool operator >(const IpAddress& left, const IpAddress& right);
    251 
    261 SFML_NETWORK_API bool operator <=(const IpAddress& left, const IpAddress& right);
    262 
    272 SFML_NETWORK_API bool operator >=(const IpAddress& left, const IpAddress& right);
    273 
    283 SFML_NETWORK_API std::istream& operator >>(std::istream& stream, IpAddress& address);
    284 
    294 SFML_NETWORK_API std::ostream& operator <<(std::ostream& stream, const IpAddress& address);
    295 
    296 } // namespace sf
    297 
    298 
    299 #endif // SFML_IPADDRESS_HPP
    300 
    301 
    static const IpAddress None
    Value representing an empty/invalid address.
    Definition: IpAddress.hpp:184
    +
    static const IpAddress Any
    Value representing any address (0.0.0.0)
    Definition: IpAddress.hpp:185
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    + +
    static const IpAddress LocalHost
    The "localhost" address (for connecting a computer to itself locally)
    Definition: IpAddress.hpp:186
    +
    static const IpAddress Broadcast
    The "broadcast" address (for sending UDP messages to everyone on a local network) ...
    Definition: IpAddress.hpp:187
    +
    + + + + diff --git a/SFML/doc/html/Joystick_8hpp_source.html b/SFML/doc/html/Joystick_8hpp_source.html new file mode 100644 index 0000000..1e4a7de --- /dev/null +++ b/SFML/doc/html/Joystick_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Joystick.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_JOYSTICK_HPP
    26 #define SFML_JOYSTICK_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/String.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_WINDOW_API Joystick
    42 {
    43 public:
    44 
    49  enum
    50  {
    51  Count = 8,
    52  ButtonCount = 32,
    53  AxisCount = 8
    54  };
    55 
    60  enum Axis
    61  {
    62  X,
    63  Y,
    64  Z,
    65  R,
    66  U,
    67  V,
    68  PovX,
    69  PovY
    70  };
    71 
    76  struct SFML_WINDOW_API Identification
    77  {
    79 
    81  unsigned int vendorId;
    82  unsigned int productId;
    83  };
    84 
    93  static bool isConnected(unsigned int joystick);
    94 
    105  static unsigned int getButtonCount(unsigned int joystick);
    106 
    118  static bool hasAxis(unsigned int joystick, Axis axis);
    119 
    131  static bool isButtonPressed(unsigned int joystick, unsigned int button);
    132 
    144  static float getAxisPosition(unsigned int joystick, Axis axis);
    145 
    154  static Identification getIdentification(unsigned int joystick);
    155 
    165  static void update();
    166 };
    167 
    168 } // namespace sf
    169 
    170 
    171 #endif // SFML_JOYSTICK_HPP
    172 
    173 
    The Y axis.
    Definition: Joystick.hpp:63
    +
    The X axis of the point-of-view hat.
    Definition: Joystick.hpp:68
    +
    Give access to the real-time state of the joysticks.
    Definition: Joystick.hpp:41
    +
    Axis
    Axes supported by SFML joysticks.
    Definition: Joystick.hpp:60
    +
    unsigned int productId
    Product identifier.
    Definition: Joystick.hpp:82
    +
    Structure holding a joystick&#39;s identification.
    Definition: Joystick.hpp:76
    +
    The X axis.
    Definition: Joystick.hpp:62
    +
    The R axis.
    Definition: Joystick.hpp:65
    +
    unsigned int vendorId
    Manufacturer identifier.
    Definition: Joystick.hpp:81
    +
    The U axis.
    Definition: Joystick.hpp:66
    +
    String name
    Name of the joystick.
    Definition: Joystick.hpp:80
    + +
    The V axis.
    Definition: Joystick.hpp:67
    +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    The Z axis.
    Definition: Joystick.hpp:64
    +
    + + + + diff --git a/SFML/doc/html/Keyboard_8hpp_source.html b/SFML/doc/html/Keyboard_8hpp_source.html new file mode 100644 index 0000000..ebd46c5 --- /dev/null +++ b/SFML/doc/html/Keyboard_8hpp_source.html @@ -0,0 +1,160 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Keyboard.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_KEYBOARD_HPP
    26 #define SFML_KEYBOARD_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    40 class SFML_WINDOW_API Keyboard
    41 {
    42 public:
    43 
    48  enum Key
    49  {
    50  Unknown = -1,
    51  A = 0,
    52  B,
    53  C,
    54  D,
    55  E,
    56  F,
    57  G,
    58  H,
    59  I,
    60  J,
    61  K,
    62  L,
    63  M,
    64  N,
    65  O,
    66  P,
    67  Q,
    68  R,
    69  S,
    70  T,
    71  U,
    72  V,
    73  W,
    74  X,
    75  Y,
    76  Z,
    77  Num0,
    78  Num1,
    79  Num2,
    80  Num3,
    81  Num4,
    82  Num5,
    83  Num6,
    84  Num7,
    85  Num8,
    86  Num9,
    90  LAlt,
    94  RAlt,
    96  Menu,
    111  Tab,
    114  End,
    118  Add,
    124  Up,
    136  F1,
    137  F2,
    138  F3,
    139  F4,
    140  F5,
    141  F6,
    142  F7,
    143  F8,
    144  F9,
    145  F10,
    146  F11,
    147  F12,
    148  F13,
    149  F14,
    150  F15,
    152 
    154 
    155  // Deprecated values:
    156 
    157  Dash = Hyphen,
    158  BackSpace = Backspace,
    159  BackSlash = Backslash,
    160  SemiColon = Semicolon,
    161  Return = Enter
    162  };
    163 
    172  static bool isKeyPressed(Key key);
    173 
    187  static void setVirtualKeyboardVisible(bool visible);
    188 };
    189 
    190 } // namespace sf
    191 
    192 
    193 #endif // SFML_KEYBOARD_HPP
    194 
    195 
    The Backspace key.
    Definition: Keyboard.hpp:110
    +
    The J key.
    Definition: Keyboard.hpp:60
    +
    The F14 key.
    Definition: Keyboard.hpp:149
    +
    The left Alt key.
    Definition: Keyboard.hpp:90
    +
    The F7 key.
    Definition: Keyboard.hpp:142
    +
    Keep last – the total number of keyboard keys.
    Definition: Keyboard.hpp:153
    +
    The &#39; key.
    Definition: Keyboard.hpp:102
    +
    The F key.
    Definition: Keyboard.hpp:56
    +
    The K key.
    Definition: Keyboard.hpp:61
    +
    The numpad 0 key.
    Definition: Keyboard.hpp:126
    +
    The Enter/Return keys.
    Definition: Keyboard.hpp:109
    +
    The numpad 2 key.
    Definition: Keyboard.hpp:128
    +
    Give access to the real-time state of the keyboard.
    Definition: Keyboard.hpp:40
    +
    The H key.
    Definition: Keyboard.hpp:58
    +
    The numpad 6 key.
    Definition: Keyboard.hpp:132
    +
    The left Control key.
    Definition: Keyboard.hpp:88
    +
    The Space key.
    Definition: Keyboard.hpp:108
    +
    The Q key.
    Definition: Keyboard.hpp:67
    +
    The Y key.
    Definition: Keyboard.hpp:75
    +
    The Menu key.
    Definition: Keyboard.hpp:96
    +
    The G key.
    Definition: Keyboard.hpp:57
    + +
    The 5 key.
    Definition: Keyboard.hpp:82
    +
    The X key.
    Definition: Keyboard.hpp:74
    +
    The Page down key.
    Definition: Keyboard.hpp:113
    +
    The right Control key.
    Definition: Keyboard.hpp:92
    +
    The V key.
    Definition: Keyboard.hpp:72
    + +
    Left arrow.
    Definition: Keyboard.hpp:122
    +
    The 0 key.
    Definition: Keyboard.hpp:77
    + + +
    The F2 key.
    Definition: Keyboard.hpp:137
    +
    The Z key.
    Definition: Keyboard.hpp:76
    +
    The P key.
    Definition: Keyboard.hpp:66
    +
    Right arrow.
    Definition: Keyboard.hpp:123
    +
    The M key.
    Definition: Keyboard.hpp:63
    +
    The F4 key.
    Definition: Keyboard.hpp:139
    +
    The + key.
    Definition: Keyboard.hpp:118
    +
    The Home key.
    Definition: Keyboard.hpp:115
    +
    The 8 key.
    Definition: Keyboard.hpp:85
    + +
    The numpad 1 key.
    Definition: Keyboard.hpp:127
    +
    The left Shift key.
    Definition: Keyboard.hpp:89
    +
    The left OS specific key: window (Windows and Linux), apple (MacOS X), ...
    Definition: Keyboard.hpp:91
    +
    The Escape key.
    Definition: Keyboard.hpp:87
    +
    The 3 key.
    Definition: Keyboard.hpp:80
    +
    The F12 key.
    Definition: Keyboard.hpp:147
    +
    The U key.
    Definition: Keyboard.hpp:71
    +
    The 6 key.
    Definition: Keyboard.hpp:83
    +
    The numpad 5 key.
    Definition: Keyboard.hpp:131
    +
    The right Alt key.
    Definition: Keyboard.hpp:94
    +
    The numpad 8 key.
    Definition: Keyboard.hpp:134
    +
    The N key.
    Definition: Keyboard.hpp:64
    +
    Key
    Key codes.
    Definition: Keyboard.hpp:48
    +
    The S key.
    Definition: Keyboard.hpp:69
    +
    The F13 key.
    Definition: Keyboard.hpp:148
    +
    The F10 key.
    Definition: Keyboard.hpp:145
    +
    The W key.
    Definition: Keyboard.hpp:73
    +
    The F3 key.
    Definition: Keyboard.hpp:138
    + +
    The F6 key.
    Definition: Keyboard.hpp:141
    +
    The 2 key.
    Definition: Keyboard.hpp:79
    +
    The 1 key.
    Definition: Keyboard.hpp:78
    +
    The R key.
    Definition: Keyboard.hpp:68
    + +
    The right OS specific key: window (Windows and Linux), apple (MacOS X), ...
    Definition: Keyboard.hpp:95
    +
    The Pause key.
    Definition: Keyboard.hpp:151
    +
    Down arrow.
    Definition: Keyboard.hpp:125
    +
    The B key.
    Definition: Keyboard.hpp:52
    + +
    The Tabulation key.
    Definition: Keyboard.hpp:111
    +
    The F8 key.
    Definition: Keyboard.hpp:143
    + + +
    The numpad 4 key.
    Definition: Keyboard.hpp:130
    +
    The T key.
    Definition: Keyboard.hpp:70
    +
    The F5 key.
    Definition: Keyboard.hpp:140
    +
    The F15 key.
    Definition: Keyboard.hpp:150
    + + +
    The Delete key.
    Definition: Keyboard.hpp:117
    +
    The numpad 9 key.
    Definition: Keyboard.hpp:135
    +
    The F11 key.
    Definition: Keyboard.hpp:146
    +
    The Insert key.
    Definition: Keyboard.hpp:116
    +
    The O key.
    Definition: Keyboard.hpp:65
    +
    The End key.
    Definition: Keyboard.hpp:114
    +
    The 4 key.
    Definition: Keyboard.hpp:81
    +
    The numpad 7 key.
    Definition: Keyboard.hpp:133
    +
    The right Shift key.
    Definition: Keyboard.hpp:93
    +
    The C key.
    Definition: Keyboard.hpp:53
    +
    The 9 key.
    Definition: Keyboard.hpp:86
    +
    The F1 key.
    Definition: Keyboard.hpp:136
    +
    The D key.
    Definition: Keyboard.hpp:54
    +
    The - key (hyphen)
    Definition: Keyboard.hpp:107
    +
    The L key.
    Definition: Keyboard.hpp:62
    +
    The - key (minus, usually from numpad)
    Definition: Keyboard.hpp:119
    +
    The Page up key.
    Definition: Keyboard.hpp:112
    +
    The F9 key.
    Definition: Keyboard.hpp:144
    +
    The numpad 3 key.
    Definition: Keyboard.hpp:129
    +
    The 7 key.
    Definition: Keyboard.hpp:84
    +
    The I key.
    Definition: Keyboard.hpp:59
    +
    Up arrow.
    Definition: Keyboard.hpp:124
    +
    The E key.
    Definition: Keyboard.hpp:55
    +
    + + + + diff --git a/SFML/doc/html/Listener_8hpp_source.html b/SFML/doc/html/Listener_8hpp_source.html new file mode 100644 index 0000000..ef1595d --- /dev/null +++ b/SFML/doc/html/Listener_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Listener.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_LISTENER_HPP
    26 #define SFML_LISTENER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/System/Vector3.hpp>
    33 
    34 
    35 namespace sf
    36 {
    42 class SFML_AUDIO_API Listener
    43 {
    44 public:
    45 
    58  static void setGlobalVolume(float volume);
    59 
    68  static float getGlobalVolume();
    69 
    82  static void setPosition(float x, float y, float z);
    83 
    94  static void setPosition(const Vector3f& position);
    95 
    104  static Vector3f getPosition();
    105 
    123  static void setDirection(float x, float y, float z);
    124 
    140  static void setDirection(const Vector3f& direction);
    141 
    150  static Vector3f getDirection();
    151 
    169  static void setUpVector(float x, float y, float z);
    170 
    186  static void setUpVector(const Vector3f& upVector);
    187 
    196  static Vector3f getUpVector();
    197 };
    198 
    199 } // namespace sf
    200 
    201 
    202 #endif // SFML_LISTENER_HPP
    203 
    204 
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    The audio listener is the point in the scene from where all the sounds are heard. ...
    Definition: Listener.hpp:42
    + +
    + + + + diff --git a/SFML/doc/html/Lock_8hpp_source.html b/SFML/doc/html/Lock_8hpp_source.html new file mode 100644 index 0000000..62f1ac9 --- /dev/null +++ b/SFML/doc/html/Lock_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Lock.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_LOCK_HPP
    26 #define SFML_LOCK_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 class Mutex;
    38 
    43 class SFML_SYSTEM_API Lock : NonCopyable
    44 {
    45 public:
    46 
    55  explicit Lock(Mutex& mutex);
    56 
    63  ~Lock();
    64 
    65 private:
    66 
    68  // Member data
    70  Mutex& m_mutex;
    71 };
    72 
    73 } // namespace sf
    74 
    75 
    76 #endif // SFML_LOCK_HPP
    77 
    78 
    Blocks concurrent access to shared resources from multiple threads.
    Definition: Mutex.hpp:47
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    Automatic wrapper for locking and unlocking mutexes.
    Definition: Lock.hpp:43
    +
    + + + + diff --git a/SFML/doc/html/Main_8hpp_source.html b/SFML/doc/html/Main_8hpp_source.html new file mode 100644 index 0000000..6279c1f --- /dev/null +++ b/SFML/doc/html/Main_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Main.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_MAIN_HPP
    26 #define SFML_MAIN_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    34 #if defined(SFML_SYSTEM_IOS)
    35 
    36  // On iOS, we have no choice but to have our own main,
    37  // so we need to rename the user one and call it later
    38  #define main sfmlMain
    39 
    40 #endif
    41 
    42 
    43 #endif // SFML_MAIN_HPP
    + + + + diff --git a/SFML/doc/html/MemoryInputStream_8hpp_source.html b/SFML/doc/html/MemoryInputStream_8hpp_source.html new file mode 100644 index 0000000..6c8648b --- /dev/null +++ b/SFML/doc/html/MemoryInputStream_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    MemoryInputStream.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_MEMORYINPUTSTREAM_HPP
    26 #define SFML_MEMORYINPUTSTREAM_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 #include <SFML/System/InputStream.hpp>
    33 #include <SFML/System/Export.hpp>
    34 #include <cstdlib>
    35 
    36 
    37 namespace sf
    38 {
    43 class SFML_SYSTEM_API MemoryInputStream : public InputStream
    44 {
    45 public:
    46 
    52 
    60  void open(const void* data, std::size_t sizeInBytes);
    61 
    74  virtual Int64 read(void* data, Int64 size);
    75 
    84  virtual Int64 seek(Int64 position);
    85 
    92  virtual Int64 tell();
    93 
    100  virtual Int64 getSize();
    101 
    102 private:
    103 
    105  // Member data
    107  const char* m_data;
    108  Int64 m_size;
    109  Int64 m_offset;
    110 };
    111 
    112 } // namespace sf
    113 
    114 
    115 #endif // SFML_MEMORYINPUTSTREAM_HPP
    116 
    117 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Implementation of input stream based on a memory chunk.
    + +
    + + + + diff --git a/SFML/doc/html/Mouse_8hpp_source.html b/SFML/doc/html/Mouse_8hpp_source.html new file mode 100644 index 0000000..40e99e7 --- /dev/null +++ b/SFML/doc/html/Mouse_8hpp_source.html @@ -0,0 +1,68 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Mouse.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_MOUSE_HPP
    26 #define SFML_MOUSE_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/Vector2.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 class Window;
    38 
    43 class SFML_WINDOW_API Mouse
    44 {
    45 public:
    46 
    51  enum Button
    52  {
    53  Left,
    58 
    59  ButtonCount
    60  };
    61 
    66  enum Wheel
    67  {
    69  HorizontalWheel
    70  };
    71 
    80  static bool isButtonPressed(Button button);
    81 
    91  static Vector2i getPosition();
    92 
    104  static Vector2i getPosition(const Window& relativeTo);
    105 
    115  static void setPosition(const Vector2i& position);
    116 
    127  static void setPosition(const Vector2i& position, const Window& relativeTo);
    128 };
    129 
    130 } // namespace sf
    131 
    132 
    133 #endif // SFML_MOUSE_HPP
    134 
    135 
    The vertical mouse wheel.
    Definition: Mouse.hpp:68
    +
    Window that serves as a target for OpenGL rendering.
    +
    The first extra mouse button.
    Definition: Mouse.hpp:56
    +
    Give access to the real-time state of the mouse.
    Definition: Mouse.hpp:43
    +
    The middle (wheel) mouse button.
    Definition: Mouse.hpp:55
    +
    The left mouse button.
    Definition: Mouse.hpp:53
    +
    The right mouse button.
    Definition: Mouse.hpp:54
    +
    Wheel
    Mouse wheels.
    Definition: Mouse.hpp:66
    +
    Button
    Mouse buttons.
    Definition: Mouse.hpp:51
    + +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    The second extra mouse button.
    Definition: Mouse.hpp:57
    +
    + + + + diff --git a/SFML/doc/html/Music_8hpp_source.html b/SFML/doc/html/Music_8hpp_source.html new file mode 100644 index 0000000..1070211 --- /dev/null +++ b/SFML/doc/html/Music_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Music.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_MUSIC_HPP
    26 #define SFML_MUSIC_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/SoundStream.hpp>
    33 #include <SFML/Audio/InputSoundFile.hpp>
    34 #include <SFML/System/Mutex.hpp>
    35 #include <SFML/System/Time.hpp>
    36 #include <string>
    37 #include <vector>
    38 
    39 
    40 namespace sf
    41 {
    42 class InputStream;
    43 
    48 class SFML_AUDIO_API Music : public SoundStream
    49 {
    50 public:
    51 
    56  template <typename T>
    57  struct Span
    58  {
    63  Span()
    64  {
    65 
    66  }
    67 
    75  Span(T off, T len):
    76  offset(off),
    77  length(len)
    78  {
    79 
    80  }
    81 
    82  T offset;
    83  T length;
    84  };
    85 
    86  // Define the relevant Span types
    87  typedef Span<Time> TimeSpan;
    88 
    93  Music();
    94 
    99  ~Music();
    100 
    120  bool openFromFile(const std::string& filename);
    121 
    143  bool openFromMemory(const void* data, std::size_t sizeInBytes);
    144 
    164  bool openFromStream(InputStream& stream);
    165 
    172  Time getDuration() const;
    173 
    189  TimeSpan getLoopPoints() const;
    190 
    211  void setLoopPoints(TimeSpan timePoints);
    212 
    213 protected:
    214 
    226  virtual bool onGetData(Chunk& data);
    227 
    234  virtual void onSeek(Time timeOffset);
    235 
    246  virtual Int64 onLoop();
    247 
    248 private:
    249 
    254  void initialize();
    255 
    264  Uint64 timeToSamples(Time position) const;
    265 
    274  Time samplesToTime(Uint64 samples) const;
    275 
    277  // Member data
    279  InputSoundFile m_file;
    280  std::vector<Int16> m_samples;
    281  Mutex m_mutex;
    282  Span<Uint64> m_loopSpan;
    283 };
    284 
    285 } // namespace sf
    286 
    287 
    288 #endif // SFML_MUSIC_HPP
    289 
    290 
    Structure defining a chunk of audio data to stream.
    Definition: SoundStream.hpp:53
    +
    Blocks concurrent access to shared resources from multiple threads.
    Definition: Mutex.hpp:47
    +
    Streamed music played from an audio file.
    Definition: Music.hpp:48
    +
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    Provide read access to sound files.
    +
    Abstract base class for streamed audio sources.
    Definition: SoundStream.hpp:45
    +
    Span()
    Default constructor.
    Definition: Music.hpp:63
    +
    T length
    The length of the time range.
    Definition: Music.hpp:83
    +
    Structure defining a time range using the template type.
    Definition: Music.hpp:57
    + +
    T offset
    The beginning offset of the time range.
    Definition: Music.hpp:82
    +
    Span(T off, T len)
    Initialization constructor.
    Definition: Music.hpp:75
    +
    + + + + diff --git a/SFML/doc/html/Mutex_8hpp_source.html b/SFML/doc/html/Mutex_8hpp_source.html new file mode 100644 index 0000000..44a1e11 --- /dev/null +++ b/SFML/doc/html/Mutex_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Mutex.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_MUTEX_HPP
    26 #define SFML_MUTEX_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 namespace priv
    38 {
    39  class MutexImpl;
    40 }
    41 
    47 class SFML_SYSTEM_API Mutex : NonCopyable
    48 {
    49 public:
    50 
    55  Mutex();
    56 
    61  ~Mutex();
    62 
    73  void lock();
    74 
    81  void unlock();
    82 
    83 private:
    84 
    86  // Member data
    88  priv::MutexImpl* m_mutexImpl;
    89 };
    90 
    91 } // namespace sf
    92 
    93 
    94 #endif // SFML_MUTEX_HPP
    95 
    96 
    Blocks concurrent access to shared resources from multiple threads.
    Definition: Mutex.hpp:47
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    + + + + diff --git a/SFML/doc/html/NativeActivity_8hpp_source.html b/SFML/doc/html/NativeActivity_8hpp_source.html new file mode 100644 index 0000000..60bc46d --- /dev/null +++ b/SFML/doc/html/NativeActivity_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    NativeActivity.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_NATIVEACTIVITY_HPP
    26 #define SFML_NATIVEACTIVITY_HPP
    27 
    28 
    30 // Headers
    32 #include <SFML/System/Export.hpp>
    33 
    34 
    35 #if !defined(SFML_SYSTEM_ANDROID)
    36 #error NativeActivity.hpp: This header is Android only.
    37 #endif
    38 
    39 
    40 struct ANativeActivity;
    41 
    42 namespace sf
    43 {
    57 SFML_SYSTEM_API ANativeActivity* getNativeActivity();
    58 
    59 } // namespace sf
    60 
    61 
    62 #endif // SFML_NATIVEACTIVITY_HPP
    +
    ANativeActivity * getNativeActivity()
    Return a pointer to the Android native activity.
    +
    + + + + diff --git a/SFML/doc/html/Network_2Export_8hpp_source.html b/SFML/doc/html/Network_2Export_8hpp_source.html new file mode 100644 index 0000000..c81d8c8 --- /dev/null +++ b/SFML/doc/html/Network_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Network/Export.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_NETWORK_EXPORT_HPP
    26 #define SFML_NETWORK_EXPORT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    35 // Define portable import / export macros
    37 #if defined(SFML_NETWORK_EXPORTS)
    38 
    39  #define SFML_NETWORK_API SFML_API_EXPORT
    40 
    41 #else
    42 
    43  #define SFML_NETWORK_API SFML_API_IMPORT
    44 
    45 #endif
    46 
    47 
    48 #endif // SFML_NETWORK_EXPORT_HPP
    + + + + diff --git a/SFML/doc/html/Network_8hpp_source.html b/SFML/doc/html/Network_8hpp_source.html new file mode 100644 index 0000000..2c92f74 --- /dev/null +++ b/SFML/doc/html/Network_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Network.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_NETWORK_HPP
    26 #define SFML_NETWORK_HPP
    27 
    29 // Headers
    31 
    32 #include <SFML/System.hpp>
    33 #include <SFML/Network/Ftp.hpp>
    34 #include <SFML/Network/Http.hpp>
    35 #include <SFML/Network/IpAddress.hpp>
    36 #include <SFML/Network/Packet.hpp>
    37 #include <SFML/Network/Socket.hpp>
    38 #include <SFML/Network/SocketHandle.hpp>
    39 #include <SFML/Network/SocketSelector.hpp>
    40 #include <SFML/Network/TcpListener.hpp>
    41 #include <SFML/Network/TcpSocket.hpp>
    42 #include <SFML/Network/UdpSocket.hpp>
    43 
    44 
    45 #endif // SFML_NETWORK_HPP
    46 
    + + + + diff --git a/SFML/doc/html/NonCopyable_8hpp_source.html b/SFML/doc/html/NonCopyable_8hpp_source.html new file mode 100644 index 0000000..854e164 --- /dev/null +++ b/SFML/doc/html/NonCopyable_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    NonCopyable.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_NONCOPYABLE_HPP
    26 #define SFML_NONCOPYABLE_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    41 class SFML_SYSTEM_API NonCopyable
    42 {
    43 protected:
    44 
    54 
    64 
    65 private:
    66 
    77  NonCopyable(const NonCopyable&);
    78 
    89  NonCopyable& operator =(const NonCopyable&);
    90 };
    91 
    92 } // namespace sf
    93 
    94 
    95 #endif // SFML_NONCOPYABLE_HPP
    96 
    97 
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    NonCopyable()
    Default constructor.
    Definition: NonCopyable.hpp:53
    +
    ~NonCopyable()
    Default destructor.
    Definition: NonCopyable.hpp:63
    +
    + + + + diff --git a/SFML/doc/html/OpenGL_8hpp_source.html b/SFML/doc/html/OpenGL_8hpp_source.html new file mode 100644 index 0000000..fca5f21 --- /dev/null +++ b/SFML/doc/html/OpenGL_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    OpenGL.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_OPENGL_HPP
    26 #define SFML_OPENGL_HPP
    27 
    28 
    32 #include <SFML/Config.hpp>
    33 
    34 
    39 #if defined(SFML_SYSTEM_WINDOWS)
    40 
    41  // The Visual C++ version of gl.h uses WINGDIAPI and APIENTRY but doesn't define them
    42  #ifdef _MSC_VER
    43  #include <windows.h>
    44  #endif
    45 
    46  #include <GL/gl.h>
    47 
    48 #elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) || defined(SFML_SYSTEM_OPENBSD)
    49 
    50  #if defined(SFML_OPENGL_ES)
    51  #include <GLES/gl.h>
    52  #include <GLES/glext.h>
    53  #else
    54  #include <GL/gl.h>
    55  #endif
    56 
    57 #elif defined(SFML_SYSTEM_MACOS)
    58 
    59  #include <OpenGL/gl.h>
    60 
    61 #elif defined (SFML_SYSTEM_IOS)
    62 
    63  #include <OpenGLES/ES1/gl.h>
    64  #include <OpenGLES/ES1/glext.h>
    65 
    66 #elif defined (SFML_SYSTEM_ANDROID)
    67 
    68  #include <GLES/gl.h>
    69  #include <GLES/glext.h>
    70 
    71  // We're not using OpenGL ES 2+ yet, but we can use the sRGB extension
    72  #include <GLES2/gl2platform.h>
    73  #include <GLES2/gl2ext.h>
    74 
    75 #endif
    76 
    77 
    78 #endif // SFML_OPENGL_HPP
    + + + + diff --git a/SFML/doc/html/OutputSoundFile_8hpp_source.html b/SFML/doc/html/OutputSoundFile_8hpp_source.html new file mode 100644 index 0000000..8deab6e --- /dev/null +++ b/SFML/doc/html/OutputSoundFile_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    OutputSoundFile.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_OUTPUTSOUNDFILE_HPP
    26 #define SFML_OUTPUTSOUNDFILE_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 #include <string>
    34 
    35 
    36 namespace sf
    37 {
    38 class SoundFileWriter;
    39 
    44 class SFML_AUDIO_API OutputSoundFile : NonCopyable
    45 {
    46 public:
    47 
    53 
    60  ~OutputSoundFile();
    61 
    74  bool openFromFile(const std::string& filename, unsigned int sampleRate, unsigned int channelCount);
    75 
    83  void write(const Int16* samples, Uint64 count);
    84 
    85 private:
    86 
    91  void close();
    92 
    94  // Member data
    96  SoundFileWriter* m_writer;
    97 };
    98 
    99 } // namespace sf
    100 
    101 
    102 #endif // SFML_OUTPUTSOUNDFILE_HPP
    103 
    104 
    Provide write access to sound files.
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    Abstract base class for sound file encoding.
    +
    + + + + diff --git a/SFML/doc/html/Packet_8hpp_source.html b/SFML/doc/html/Packet_8hpp_source.html new file mode 100644 index 0000000..c04c1e2 --- /dev/null +++ b/SFML/doc/html/Packet_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Packet.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_PACKET_HPP
    26 #define SFML_PACKET_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <string>
    33 #include <vector>
    34 
    35 
    36 namespace sf
    37 {
    38 class String;
    39 class TcpSocket;
    40 class UdpSocket;
    41 
    47 class SFML_NETWORK_API Packet
    48 {
    49  // A bool-like type that cannot be converted to integer or pointer types
    50  typedef bool (Packet::*BoolType)(std::size_t);
    51 
    52 public:
    53 
    60  Packet();
    61 
    66  virtual ~Packet();
    67 
    77  void append(const void* data, std::size_t sizeInBytes);
    78 
    87  void clear();
    88 
    102  const void* getData() const;
    103 
    115  std::size_t getDataSize() const;
    116 
    129  bool endOfPacket() const;
    130 
    131 public:
    132 
    171  operator BoolType() const;
    172 
    177  Packet& operator >>(bool& data);
    178 
    182  Packet& operator >>(Int8& data);
    183 
    187  Packet& operator >>(Uint8& data);
    188 
    192  Packet& operator >>(Int16& data);
    193 
    197  Packet& operator >>(Uint16& data);
    198 
    202  Packet& operator >>(Int32& data);
    203 
    207  Packet& operator >>(Uint32& data);
    208 
    212  Packet& operator >>(Int64& data);
    213 
    217  Packet& operator >>(Uint64& data);
    218 
    222  Packet& operator >>(float& data);
    223 
    227  Packet& operator >>(double& data);
    228 
    232  Packet& operator >>(char* data);
    233 
    237  Packet& operator >>(std::string& data);
    238 
    242  Packet& operator >>(wchar_t* data);
    243 
    247  Packet& operator >>(std::wstring& data);
    248 
    252  Packet& operator >>(String& data);
    253 
    258  Packet& operator <<(bool data);
    259 
    263  Packet& operator <<(Int8 data);
    264 
    268  Packet& operator <<(Uint8 data);
    269 
    273  Packet& operator <<(Int16 data);
    274 
    278  Packet& operator <<(Uint16 data);
    279 
    283  Packet& operator <<(Int32 data);
    284 
    288  Packet& operator <<(Uint32 data);
    289 
    293  Packet& operator <<(Int64 data);
    294 
    298  Packet& operator <<(Uint64 data);
    299 
    303  Packet& operator <<(float data);
    304 
    308  Packet& operator <<(double data);
    309 
    313  Packet& operator <<(const char* data);
    314 
    318  Packet& operator <<(const std::string& data);
    319 
    323  Packet& operator <<(const wchar_t* data);
    324 
    328  Packet& operator <<(const std::wstring& data);
    329 
    333  Packet& operator <<(const String& data);
    334 
    335 protected:
    336 
    337  friend class TcpSocket;
    338  friend class UdpSocket;
    339 
    358  virtual const void* onSend(std::size_t& size);
    359 
    377  virtual void onReceive(const void* data, std::size_t size);
    378 
    379 private:
    380 
    385  bool operator ==(const Packet& right) const;
    386  bool operator !=(const Packet& right) const;
    387 
    398  bool checkSize(std::size_t size);
    399 
    401  // Member data
    403  std::vector<char> m_data;
    404  std::size_t m_readPos;
    405  std::size_t m_sendPos;
    406  bool m_isValid;
    407 };
    408 
    409 } // namespace sf
    410 
    411 
    412 #endif // SFML_PACKET_HPP
    413 
    414 
    Specialized socket using the UDP protocol.
    Definition: UdpSocket.hpp:45
    +
    Utility class to build blocks of data to transfer over the network.
    Definition: Packet.hpp:47
    +
    Specialized socket using the TCP protocol.
    Definition: TcpSocket.hpp:46
    + +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    + + + + diff --git a/SFML/doc/html/PrimitiveType_8hpp_source.html b/SFML/doc/html/PrimitiveType_8hpp_source.html new file mode 100644 index 0000000..ece954a --- /dev/null +++ b/SFML/doc/html/PrimitiveType_8hpp_source.html @@ -0,0 +1,68 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    PrimitiveType.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_PRIMITIVETYPE_HPP
    26 #define SFML_PRIMITIVETYPE_HPP
    27 
    28 namespace sf
    29 {
    40 {
    48 
    49  // Deprecated names
    53 };
    54 
    55 } // namespace sf
    56 
    57 
    58 #endif // SFML_PRIMITIVETYPE_HPP
    PrimitiveType
    Types of primitives that a sf::VertexArray can render.
    + +
    List of individual triangles.
    + +
    List of individual quads (deprecated, don&#39;t work with OpenGL ES)
    +
    List of individual points.
    + +
    List of connected triangles, a point uses the two previous points to form a triangle.
    +
    List of individual lines.
    + +
    List of connected triangles, a point uses the common center and the previous point to form a triangle...
    +
    List of connected lines, a point uses the previous point to form a line.
    +
    + + + + diff --git a/SFML/doc/html/Rect_8hpp_source.html b/SFML/doc/html/Rect_8hpp_source.html new file mode 100644 index 0000000..5787542 --- /dev/null +++ b/SFML/doc/html/Rect_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Rect.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RECT_HPP
    26 #define SFML_RECT_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Vector2.hpp>
    32 #include <algorithm>
    33 
    34 
    35 namespace sf
    36 {
    41 template <typename T>
    42 class Rect
    43 {
    44 public:
    45 
    53  Rect();
    54 
    67  Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight);
    68 
    79  Rect(const Vector2<T>& position, const Vector2<T>& size);
    80 
    92  template <typename U>
    93  explicit Rect(const Rect<U>& rectangle);
    94 
    109  bool contains(T x, T y) const;
    110 
    124  bool contains(const Vector2<T>& point) const;
    125 
    136  bool intersects(const Rect<T>& rectangle) const;
    137 
    152  bool intersects(const Rect<T>& rectangle, Rect<T>& intersection) const;
    153 
    155  // Member data
    157  T left;
    158  T top;
    159  T width;
    160  T height;
    161 };
    162 
    175 template <typename T>
    176 bool operator ==(const Rect<T>& left, const Rect<T>& right);
    177 
    190 template <typename T>
    191 bool operator !=(const Rect<T>& left, const Rect<T>& right);
    192 
    193 #include <SFML/Graphics/Rect.inl>
    194 
    195 // Create typedefs for the most common types
    196 typedef Rect<int> IntRect;
    197 typedef Rect<float> FloatRect;
    198 
    199 } // namespace sf
    200 
    201 
    202 #endif // SFML_RECT_HPP
    203 
    204 
    bool contains(T x, T y) const
    Check if a point is inside the rectangle&#39;s area.
    +
    T height
    Height of the rectangle.
    Definition: Rect.hpp:160
    +
    T width
    Width of the rectangle.
    Definition: Rect.hpp:159
    +
    Rect()
    Default constructor.
    +
    Utility class for manipulating 2D axis aligned rectangles.
    Definition: Rect.hpp:42
    + +
    bool intersects(const Rect< T > &rectangle) const
    Check the intersection between two rectangles.
    +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    T top
    Top coordinate of the rectangle.
    Definition: Rect.hpp:158
    +
    T left
    Left coordinate of the rectangle.
    Definition: Rect.hpp:157
    +
    + + + + diff --git a/SFML/doc/html/RectangleShape_8hpp_source.html b/SFML/doc/html/RectangleShape_8hpp_source.html new file mode 100644 index 0000000..0d87558 --- /dev/null +++ b/SFML/doc/html/RectangleShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    RectangleShape.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RECTANGLESHAPE_HPP
    26 #define SFML_RECTANGLESHAPE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Shape.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_GRAPHICS_API RectangleShape : public Shape
    42 {
    43 public:
    44 
    51  explicit RectangleShape(const Vector2f& size = Vector2f(0, 0));
    52 
    61  void setSize(const Vector2f& size);
    62 
    71  const Vector2f& getSize() const;
    72 
    80  virtual std::size_t getPointCount() const;
    81 
    95  virtual Vector2f getPoint(std::size_t index) const;
    96 
    97 private:
    98 
    100  // Member data
    102  Vector2f m_size;
    103 };
    104 
    105 } // namespace sf
    106 
    107 
    108 #endif // SFML_RECTANGLESHAPE_HPP
    109 
    110 
    Base class for textured shapes with outline.
    Definition: Shape.hpp:44
    +
    Specialized shape representing a rectangle.
    + + +
    + + + + diff --git a/SFML/doc/html/RenderStates_8hpp_source.html b/SFML/doc/html/RenderStates_8hpp_source.html new file mode 100644 index 0000000..6fe417a --- /dev/null +++ b/SFML/doc/html/RenderStates_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    RenderStates.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RENDERSTATES_HPP
    26 #define SFML_RENDERSTATES_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/BlendMode.hpp>
    33 #include <SFML/Graphics/Transform.hpp>
    34 
    35 
    36 namespace sf
    37 {
    38 class Shader;
    39 class Texture;
    40 
    45 class SFML_GRAPHICS_API RenderStates
    46 {
    47 public:
    48 
    61  RenderStates();
    62 
    69  RenderStates(const BlendMode& theBlendMode);
    70 
    77  RenderStates(const Transform& theTransform);
    78 
    85  RenderStates(const Texture* theTexture);
    86 
    93  RenderStates(const Shader* theShader);
    94 
    104  RenderStates(const BlendMode& theBlendMode, const Transform& theTransform,
    105  const Texture* theTexture, const Shader* theShader);
    106 
    108  // Static member data
    110  static const RenderStates Default;
    111 
    113  // Member data
    117  const Texture* texture;
    118  const Shader* shader;
    119 };
    120 
    121 } // namespace sf
    122 
    123 
    124 #endif // SFML_RENDERSTATES_HPP
    125 
    126 
    const Shader * shader
    Shader.
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    const Texture * texture
    Texture.
    +
    Define the states used for drawing to a RenderTarget.
    +
    BlendMode blendMode
    Blending mode.
    +
    Transform transform
    Transform.
    +
    Blending modes for drawing.
    Definition: BlendMode.hpp:41
    +
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    + +
    Shader class (vertex, geometry and fragment)
    Definition: Shader.hpp:52
    +
    static const RenderStates Default
    Special instance holding the default render states.
    +
    + + + + diff --git a/SFML/doc/html/RenderTarget_8hpp_source.html b/SFML/doc/html/RenderTarget_8hpp_source.html new file mode 100644 index 0000000..67db3ad --- /dev/null +++ b/SFML/doc/html/RenderTarget_8hpp_source.html @@ -0,0 +1,73 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    RenderTarget.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RENDERTARGET_HPP
    26 #define SFML_RENDERTARGET_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Color.hpp>
    33 #include <SFML/Graphics/Rect.hpp>
    34 #include <SFML/Graphics/View.hpp>
    35 #include <SFML/Graphics/Transform.hpp>
    36 #include <SFML/Graphics/BlendMode.hpp>
    37 #include <SFML/Graphics/RenderStates.hpp>
    38 #include <SFML/Graphics/PrimitiveType.hpp>
    39 #include <SFML/Graphics/Vertex.hpp>
    40 #include <SFML/System/NonCopyable.hpp>
    41 
    42 
    43 namespace sf
    44 {
    45 class Drawable;
    46 class VertexBuffer;
    47 
    52 class SFML_GRAPHICS_API RenderTarget : NonCopyable
    53 {
    54 public:
    55 
    60  virtual ~RenderTarget();
    61 
    71  void clear(const Color& color = Color(0, 0, 0, 255));
    72 
    92  void setView(const View& view);
    93 
    102  const View& getView() const;
    103 
    115  const View& getDefaultView() const;
    116 
    130  IntRect getViewport(const View& view) const;
    131 
    150  Vector2f mapPixelToCoords(const Vector2i& point) const;
    151 
    181  Vector2f mapPixelToCoords(const Vector2i& point, const View& view) const;
    182 
    201  Vector2i mapCoordsToPixel(const Vector2f& point) const;
    202 
    228  Vector2i mapCoordsToPixel(const Vector2f& point, const View& view) const;
    229 
    237  void draw(const Drawable& drawable, const RenderStates& states = RenderStates::Default);
    238 
    248  void draw(const Vertex* vertices, std::size_t vertexCount,
    249  PrimitiveType type, const RenderStates& states = RenderStates::Default);
    250 
    258  void draw(const VertexBuffer& vertexBuffer, const RenderStates& states = RenderStates::Default);
    259 
    269  void draw(const VertexBuffer& vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates& states = RenderStates::Default);
    270 
    277  virtual Vector2u getSize() const = 0;
    278 
    299  virtual bool setActive(bool active = true);
    300 
    333  void pushGLStates();
    334 
    344  void popGLStates();
    345 
    367  void resetGLStates();
    368 
    369 protected:
    370 
    375  RenderTarget();
    376 
    384  void initialize();
    385 
    386 private:
    387 
    392  void applyCurrentView();
    393 
    400  void applyBlendMode(const BlendMode& mode);
    401 
    408  void applyTransform(const Transform& transform);
    409 
    416  void applyTexture(const Texture* texture);
    417 
    424  void applyShader(const Shader* shader);
    425 
    433  void setupDraw(bool useVertexCache, const RenderStates& states);
    434 
    443  void drawPrimitives(PrimitiveType type, std::size_t firstVertex, std::size_t vertexCount);
    444 
    451  void cleanupDraw(const RenderStates& states);
    452 
    457  struct StatesCache
    458  {
    459  enum {VertexCacheSize = 4};
    460 
    461  bool enable;
    462  bool glStatesSet;
    463  bool viewChanged;
    464  BlendMode lastBlendMode;
    465  Uint64 lastTextureId;
    466  bool texCoordsArrayEnabled;
    467  bool useVertexCache;
    468  Vertex vertexCache[VertexCacheSize];
    469  };
    470 
    472  // Member data
    474  View m_defaultView;
    475  View m_view;
    476  StatesCache m_cache;
    477  Uint64 m_id;
    478 };
    479 
    480 } // namespace sf
    481 
    482 
    483 #endif // SFML_RENDERTARGET_HPP
    484 
    485 
    PrimitiveType
    Types of primitives that a sf::VertexArray can render.
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    Define the states used for drawing to a RenderTarget.
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    2D camera that defines what region is shown on screen
    Definition: View.hpp:43
    +
    Blending modes for drawing.
    Definition: BlendMode.hpp:41
    +
    Vertex buffer storage for one or more 2D primitives.
    +
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    +
    Define a point with color and texture coordinates.
    Definition: Vertex.hpp:42
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + + + +
    Shader class (vertex, geometry and fragment)
    Definition: Shader.hpp:52
    +
    static const RenderStates Default
    Special instance holding the default render states.
    +
    + + + + diff --git a/SFML/doc/html/RenderTexture_8hpp_source.html b/SFML/doc/html/RenderTexture_8hpp_source.html new file mode 100644 index 0000000..9c69601 --- /dev/null +++ b/SFML/doc/html/RenderTexture_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    RenderTexture.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RENDERTEXTURE_HPP
    26 #define SFML_RENDERTEXTURE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Texture.hpp>
    33 #include <SFML/Graphics/RenderTarget.hpp>
    34 #include <SFML/Window/ContextSettings.hpp>
    35 
    36 
    37 namespace sf
    38 {
    39 namespace priv
    40 {
    41  class RenderTextureImpl;
    42 }
    43 
    48 class SFML_GRAPHICS_API RenderTexture : public RenderTarget
    49 {
    50 public:
    51 
    61  RenderTexture();
    62 
    67  virtual ~RenderTexture();
    68 
    89  SFML_DEPRECATED bool create(unsigned int width, unsigned int height, bool depthBuffer);
    90 
    109  bool create(unsigned int width, unsigned int height, const ContextSettings& settings = ContextSettings());
    110 
    117  static unsigned int getMaximumAntialiasingLevel();
    118 
    130  void setSmooth(bool smooth);
    131 
    140  bool isSmooth() const;
    141 
    153  void setRepeated(bool repeated);
    154 
    163  bool isRepeated() const;
    164 
    179  bool generateMipmap();
    180 
    196  bool setActive(bool active = true);
    197 
    207  void display();
    208 
    218  virtual Vector2u getSize() const;
    219 
    234  const Texture& getTexture() const;
    235 
    236 private:
    237 
    239  // Member data
    241  priv::RenderTextureImpl* m_impl;
    242  Texture m_texture;
    243 };
    244 
    245 } // namespace sf
    246 
    247 
    248 #endif // SFML_RENDERTEXTURE_HPP
    249 
    250 
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    Target for off-screen 2D rendering into a texture.
    +
    Base class for all render targets (window, texture, ...)
    +
    Structure defining the settings of the OpenGL context attached to a window.
    + + +
    + + + + diff --git a/SFML/doc/html/RenderWindow_8hpp_source.html b/SFML/doc/html/RenderWindow_8hpp_source.html new file mode 100644 index 0000000..d23f617 --- /dev/null +++ b/SFML/doc/html/RenderWindow_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    RenderWindow.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_RENDERWINDOW_HPP
    26 #define SFML_RENDERWINDOW_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/RenderTarget.hpp>
    33 #include <SFML/Graphics/Image.hpp>
    34 #include <SFML/Window/Window.hpp>
    35 #include <string>
    36 
    37 
    38 namespace sf
    39 {
    44 class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget
    45 {
    46 public:
    47 
    55  RenderWindow();
    56 
    76  RenderWindow(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
    77 
    94  explicit RenderWindow(WindowHandle handle, const ContextSettings& settings = ContextSettings());
    95 
    102  virtual ~RenderWindow();
    103 
    113  virtual Vector2u getSize() const;
    114 
    131  bool setActive(bool active = true);
    132 
    158  SFML_DEPRECATED Image capture() const;
    159 
    160 protected:
    161 
    170  virtual void onCreate();
    171 
    179  virtual void onResize();
    180 };
    181 
    182 } // namespace sf
    183 
    184 
    185 #endif // SFML_RENDERWINDOW_HPP
    186 
    187 
    Default window style.
    Definition: WindowStyle.hpp:46
    +
    Window that serves as a target for OpenGL rendering.
    +
    Window that can serve as a target for 2D drawing.
    +
    Base class for all render targets (window, texture, ...)
    +
    Structure defining the settings of the OpenGL context attached to a window.
    +
    VideoMode defines a video mode (width, height, bpp)
    Definition: VideoMode.hpp:41
    + + +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    platform specific WindowHandle
    Define a low-level window handle type, specific to each platform.
    +
    Class for loading, manipulating and saving images.
    Definition: Image.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/Sensor_8hpp_source.html b/SFML/doc/html/Sensor_8hpp_source.html new file mode 100644 index 0000000..4decb96 --- /dev/null +++ b/SFML/doc/html/Sensor_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Sensor.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SENSOR_HPP
    26 #define SFML_SENSOR_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/Vector3.hpp>
    33 #include <SFML/System/Time.hpp>
    34 
    35 
    36 namespace sf
    37 {
    42 class SFML_WINDOW_API Sensor
    43 {
    44 public:
    45 
    50  enum Type
    51  {
    58 
    59  Count
    60  };
    61 
    70  static bool isAvailable(Type sensor);
    71 
    85  static void setEnabled(Type sensor, bool enabled);
    86 
    95  static Vector3f getValue(Type sensor);
    96 };
    97 
    98 } // namespace sf
    99 
    100 
    101 #endif // SFML_SENSOR_HPP
    102 
    103 
    Give access to the real-time state of the sensors.
    Definition: Sensor.hpp:42
    +
    Measures the raw acceleration (m/s^2)
    Definition: Sensor.hpp:52
    +
    Type
    Sensor type.
    Definition: Sensor.hpp:50
    +
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2) ...
    Definition: Sensor.hpp:56
    +
    Measures the raw rotation rates (degrees/s)
    Definition: Sensor.hpp:53
    +
    Measures the ambient magnetic field (micro-teslas)
    Definition: Sensor.hpp:54
    + +
    Measures the absolute 3D orientation (degrees)
    Definition: Sensor.hpp:57
    +
    Measures the direction and intensity of gravity, independent of device acceleration (m/s^2) ...
    Definition: Sensor.hpp:55
    +
    + + + + diff --git a/SFML/doc/html/Shader_8hpp_source.html b/SFML/doc/html/Shader_8hpp_source.html new file mode 100644 index 0000000..9394094 --- /dev/null +++ b/SFML/doc/html/Shader_8hpp_source.html @@ -0,0 +1,76 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Shader.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SHADER_HPP
    26 #define SFML_SHADER_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Glsl.hpp>
    33 #include <SFML/Window/GlResource.hpp>
    34 #include <SFML/System/NonCopyable.hpp>
    35 #include <SFML/System/Vector2.hpp>
    36 #include <SFML/System/Vector3.hpp>
    37 #include <map>
    38 #include <string>
    39 
    40 
    41 namespace sf
    42 {
    43 class Color;
    44 class InputStream;
    45 class Texture;
    46 class Transform;
    47 
    52 class SFML_GRAPHICS_API Shader : GlResource, NonCopyable
    53 {
    54 public:
    55 
    60  enum Type
    61  {
    64  Fragment
    65  };
    66 
    74  struct CurrentTextureType {};
    75 
    83 
    84 public:
    85 
    92  Shader();
    93 
    98  ~Shader();
    99 
    119  bool loadFromFile(const std::string& filename, Type type);
    120 
    140  bool loadFromFile(const std::string& vertexShaderFilename, const std::string& fragmentShaderFilename);
    141 
    162  bool loadFromFile(const std::string& vertexShaderFilename, const std::string& geometryShaderFilename, const std::string& fragmentShaderFilename);
    163 
    182  bool loadFromMemory(const std::string& shader, Type type);
    183 
    203  bool loadFromMemory(const std::string& vertexShader, const std::string& fragmentShader);
    204 
    225  bool loadFromMemory(const std::string& vertexShader, const std::string& geometryShader, const std::string& fragmentShader);
    226 
    245  bool loadFromStream(InputStream& stream, Type type);
    246 
    266  bool loadFromStream(InputStream& vertexShaderStream, InputStream& fragmentShaderStream);
    267 
    288  bool loadFromStream(InputStream& vertexShaderStream, InputStream& geometryShaderStream, InputStream& fragmentShaderStream);
    289 
    297  void setUniform(const std::string& name, float x);
    298 
    306  void setUniform(const std::string& name, const Glsl::Vec2& vector);
    307 
    315  void setUniform(const std::string& name, const Glsl::Vec3& vector);
    316 
    333  void setUniform(const std::string& name, const Glsl::Vec4& vector);
    334 
    342  void setUniform(const std::string& name, int x);
    343 
    351  void setUniform(const std::string& name, const Glsl::Ivec2& vector);
    352 
    360  void setUniform(const std::string& name, const Glsl::Ivec3& vector);
    361 
    377  void setUniform(const std::string& name, const Glsl::Ivec4& vector);
    378 
    386  void setUniform(const std::string& name, bool x);
    387 
    395  void setUniform(const std::string& name, const Glsl::Bvec2& vector);
    396 
    404  void setUniform(const std::string& name, const Glsl::Bvec3& vector);
    405 
    413  void setUniform(const std::string& name, const Glsl::Bvec4& vector);
    414 
    422  void setUniform(const std::string& name, const Glsl::Mat3& matrix);
    423 
    431  void setUniform(const std::string& name, const Glsl::Mat4& matrix);
    432 
    463  void setUniform(const std::string& name, const Texture& texture);
    464 
    486  void setUniform(const std::string& name, CurrentTextureType);
    487 
    496  void setUniformArray(const std::string& name, const float* scalarArray, std::size_t length);
    497 
    506  void setUniformArray(const std::string& name, const Glsl::Vec2* vectorArray, std::size_t length);
    507 
    516  void setUniformArray(const std::string& name, const Glsl::Vec3* vectorArray, std::size_t length);
    517 
    526  void setUniformArray(const std::string& name, const Glsl::Vec4* vectorArray, std::size_t length);
    527 
    536  void setUniformArray(const std::string& name, const Glsl::Mat3* matrixArray, std::size_t length);
    537 
    546  void setUniformArray(const std::string& name, const Glsl::Mat4* matrixArray, std::size_t length);
    547 
    554  SFML_DEPRECATED void setParameter(const std::string& name, float x);
    555 
    562  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y);
    563 
    570  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y, float z);
    571 
    578  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y, float z, float w);
    579 
    586  SFML_DEPRECATED void setParameter(const std::string& name, const Vector2f& vector);
    587 
    594  SFML_DEPRECATED void setParameter(const std::string& name, const Vector3f& vector);
    595 
    602  SFML_DEPRECATED void setParameter(const std::string& name, const Color& color);
    603 
    610  SFML_DEPRECATED void setParameter(const std::string& name, const Transform& transform);
    611 
    618  SFML_DEPRECATED void setParameter(const std::string& name, const Texture& texture);
    619 
    626  SFML_DEPRECATED void setParameter(const std::string& name, CurrentTextureType);
    627 
    638  unsigned int getNativeHandle() const;
    639 
    661  static void bind(const Shader* shader);
    662 
    673  static bool isAvailable();
    674 
    692  static bool isGeometryAvailable();
    693 
    694 private:
    695 
    709  bool compile(const char* vertexShaderCode, const char* geometryShaderCode, const char* fragmentShaderCode);
    710 
    718  void bindTextures() const;
    719 
    728  int getUniformLocation(const std::string& name);
    729 
    737  struct UniformBinder;
    738 
    740  // Types
    742  typedef std::map<int, const Texture*> TextureTable;
    743  typedef std::map<std::string, int> UniformTable;
    744 
    746  // Member data
    748  unsigned int m_shaderProgram;
    749  int m_currentTexture;
    750  TextureTable m_textures;
    751  UniformTable m_uniforms;
    752 };
    753 
    754 } // namespace sf
    755 
    756 
    757 #endif // SFML_SHADER_HPP
    758 
    759 
    implementation defined Bvec4
    4D bool vector (bvec4 in GLSL)
    Definition: Glsl.hpp:130
    +
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    implementation defined Ivec4
    4D int vector (ivec4 in GLSL)
    Definition: Glsl.hpp:124
    +
    implementation defined Mat4
    4x4 float matrix (mat4 in GLSL)
    Definition: Glsl.hpp:181
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    implementation defined Vec4
    4D float vector (vec4 in GLSL)
    Definition: Glsl.hpp:110
    +
    implementation defined Mat3
    3x3 float matrix (mat3 in GLSL)
    Definition: Glsl.hpp:155
    +
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    +
    Special type that can be passed to setUniform(), and that represents the texture of the object being ...
    Definition: Shader.hpp:74
    +
    Geometry shader.
    Definition: Shader.hpp:63
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    static CurrentTextureType CurrentTexture
    Represents the texture of the object being drawn.
    Definition: Shader.hpp:82
    + +
    Vertex shader
    Definition: Shader.hpp:62
    + +
    Shader class (vertex, geometry and fragment)
    Definition: Shader.hpp:52
    +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    Type
    Types of shaders.
    Definition: Shader.hpp:60
    +
    + + + + diff --git a/SFML/doc/html/Shape_8hpp_source.html b/SFML/doc/html/Shape_8hpp_source.html new file mode 100644 index 0000000..3ca83d9 --- /dev/null +++ b/SFML/doc/html/Shape_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Shape.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SHAPE_HPP
    26 #define SFML_SHAPE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Drawable.hpp>
    33 #include <SFML/Graphics/Transformable.hpp>
    34 #include <SFML/Graphics/VertexArray.hpp>
    35 #include <SFML/System/Vector2.hpp>
    36 
    37 
    38 namespace sf
    39 {
    44 class SFML_GRAPHICS_API Shape : public Drawable, public Transformable
    45 {
    46 public:
    47 
    52  virtual ~Shape();
    53 
    74  void setTexture(const Texture* texture, bool resetRect = false);
    75 
    88  void setTextureRect(const IntRect& rect);
    89 
    105  void setFillColor(const Color& color);
    106 
    117  void setOutlineColor(const Color& color);
    118 
    132  void setOutlineThickness(float thickness);
    133 
    146  const Texture* getTexture() const;
    147 
    156  const IntRect& getTextureRect() const;
    157 
    166  const Color& getFillColor() const;
    167 
    176  const Color& getOutlineColor() const;
    177 
    186  float getOutlineThickness() const;
    187 
    196  virtual std::size_t getPointCount() const = 0;
    197 
    213  virtual Vector2f getPoint(std::size_t index) const = 0;
    214 
    227  FloatRect getLocalBounds() const;
    228 
    248  FloatRect getGlobalBounds() const;
    249 
    250 protected:
    251 
    256  Shape();
    257 
    266  void update();
    267 
    268 private:
    269 
    277  virtual void draw(RenderTarget& target, RenderStates states) const;
    278 
    283  void updateFillColors();
    284 
    289  void updateTexCoords();
    290 
    295  void updateOutline();
    296 
    301  void updateOutlineColors();
    302 
    303 private:
    304 
    306  // Member data
    308  const Texture* m_texture;
    309  IntRect m_textureRect;
    310  Color m_fillColor;
    311  Color m_outlineColor;
    312  float m_outlineThickness;
    313  VertexArray m_vertices;
    314  VertexArray m_outlineVertices;
    315  FloatRect m_insideBounds;
    316  FloatRect m_bounds;
    317 };
    318 
    319 } // namespace sf
    320 
    321 
    322 #endif // SFML_SHAPE_HPP
    323 
    324 
    Base class for textured shapes with outline.
    Definition: Shape.hpp:44
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    Define the states used for drawing to a RenderTarget.
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    Define a set of one or more 2D primitives.
    Definition: VertexArray.hpp:45
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + + + +
    Decomposed transform defined by a position, a rotation and a scale.
    +
    + + + + diff --git a/SFML/doc/html/Sleep_8hpp_source.html b/SFML/doc/html/Sleep_8hpp_source.html new file mode 100644 index 0000000..49e24ec --- /dev/null +++ b/SFML/doc/html/Sleep_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Sleep.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SLEEP_HPP
    26 #define SFML_SLEEP_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/Time.hpp>
    33 
    34 
    35 namespace sf
    36 {
    47 void SFML_SYSTEM_API sleep(Time duration);
    48 
    49 } // namespace sf
    50 
    51 
    52 #endif // SFML_SLEEP_HPP
    +
    void sleep(Time duration)
    Make the current thread sleep for a given duration.
    +
    + + + + diff --git a/SFML/doc/html/SocketHandle_8hpp_source.html b/SFML/doc/html/SocketHandle_8hpp_source.html new file mode 100644 index 0000000..618b1cf --- /dev/null +++ b/SFML/doc/html/SocketHandle_8hpp_source.html @@ -0,0 +1,57 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SocketHandle.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOCKETHANDLE_HPP
    26 #define SFML_SOCKETHANDLE_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 #if defined(SFML_SYSTEM_WINDOWS)
    34  #include <basetsd.h>
    35 #endif
    36 
    37 
    38 namespace sf
    39 {
    41 // Define the low-level socket handle type, specific to
    42 // each platform
    44 #if defined(SFML_SYSTEM_WINDOWS)
    45 
    46  typedef UINT_PTR SocketHandle;
    47 
    48 #else
    49 
    50  typedef int SocketHandle;
    51 
    52 #endif
    53 
    54 } // namespace sf
    55 
    56 
    57 #endif // SFML_SOCKETHANDLE_HPP
    +
    + + + + diff --git a/SFML/doc/html/SocketSelector_8hpp_source.html b/SFML/doc/html/SocketSelector_8hpp_source.html new file mode 100644 index 0000000..5f0358e --- /dev/null +++ b/SFML/doc/html/SocketSelector_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SocketSelector.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOCKETSELECTOR_HPP
    26 #define SFML_SOCKETSELECTOR_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/System/Time.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 class Socket;
    38 
    43 class SFML_NETWORK_API SocketSelector
    44 {
    45 public:
    46 
    52 
    59  SocketSelector(const SocketSelector& copy);
    60 
    65  ~SocketSelector();
    66 
    80  void add(Socket& socket);
    81 
    93  void remove(Socket& socket);
    94 
    105  void clear();
    106 
    123  bool wait(Time timeout = Time::Zero);
    124 
    142  bool isReady(Socket& socket) const;
    143 
    152  SocketSelector& operator =(const SocketSelector& right);
    153 
    154 private:
    155 
    156  struct SocketSelectorImpl;
    157 
    159  // Member data
    161  SocketSelectorImpl* m_impl;
    162 };
    163 
    164 } // namespace sf
    165 
    166 
    167 #endif // SFML_SOCKETSELECTOR_HPP
    168 
    169 
    Represents a time value.
    Definition: Time.hpp:40
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    +
    Base class for all the socket types.
    Definition: Socket.hpp:45
    +
    Multiplexer that allows to read from multiple sockets.
    + +
    + + + + diff --git a/SFML/doc/html/Socket_8hpp_source.html b/SFML/doc/html/Socket_8hpp_source.html new file mode 100644 index 0000000..43ea5df --- /dev/null +++ b/SFML/doc/html/Socket_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Socket.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOCKET_HPP
    26 #define SFML_SOCKET_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/SocketHandle.hpp>
    33 #include <SFML/System/NonCopyable.hpp>
    34 #include <vector>
    35 
    36 
    37 namespace sf
    38 {
    39 class SocketSelector;
    40 
    45 class SFML_NETWORK_API Socket : NonCopyable
    46 {
    47 public:
    48 
    53  enum Status
    54  {
    55  Done,
    59  Error
    60  };
    61 
    66  enum
    67  {
    68  AnyPort = 0
    69  };
    70 
    71 public:
    72 
    77  virtual ~Socket();
    78 
    96  void setBlocking(bool blocking);
    97 
    106  bool isBlocking() const;
    107 
    108 protected:
    109 
    114  enum Type
    115  {
    116  Tcp,
    117  Udp
    118  };
    119 
    128  Socket(Type type);
    129 
    140  SocketHandle getHandle() const;
    141 
    148  void create();
    149 
    159  void create(SocketHandle handle);
    160 
    167  void close();
    168 
    169 private:
    170 
    171  friend class SocketSelector;
    172 
    174  // Member data
    176  Type m_type;
    177  SocketHandle m_socket;
    178  bool m_isBlocking;
    179 };
    180 
    181 } // namespace sf
    182 
    183 
    184 #endif // SFML_SOCKET_HPP
    185 
    186 
    The socket sent a part of the data.
    Definition: Socket.hpp:57
    +
    The socket has sent / received the data.
    Definition: Socket.hpp:55
    +
    Status
    Status codes that may be returned by socket functions.
    Definition: Socket.hpp:53
    +
    The socket is not ready to send / receive data yet.
    Definition: Socket.hpp:56
    +
    Base class for all the socket types.
    Definition: Socket.hpp:45
    +
    Multiplexer that allows to read from multiple sockets.
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    TCP protocol.
    Definition: Socket.hpp:116
    + +
    Type
    Types of protocols that the socket can use.
    Definition: Socket.hpp:114
    +
    The TCP socket has been disconnected.
    Definition: Socket.hpp:58
    +
    + + + + diff --git a/SFML/doc/html/SoundBufferRecorder_8hpp_source.html b/SFML/doc/html/SoundBufferRecorder_8hpp_source.html new file mode 100644 index 0000000..be47322 --- /dev/null +++ b/SFML/doc/html/SoundBufferRecorder_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundBufferRecorder.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDBUFFERRECORDER_HPP
    26 #define SFML_SOUNDBUFFERRECORDER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/SoundBuffer.hpp>
    33 #include <SFML/Audio/SoundRecorder.hpp>
    34 #include <vector>
    35 
    36 
    37 namespace sf
    38 {
    44 class SFML_AUDIO_API SoundBufferRecorder : public SoundRecorder
    45 {
    46 public:
    47 
    53 
    65  const SoundBuffer& getBuffer() const;
    66 
    67 protected:
    68 
    75  virtual bool onStart();
    76 
    86  virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount);
    87 
    92  virtual void onStop();
    93 
    94 private:
    95 
    97  // Member data
    99  std::vector<Int16> m_samples;
    100  SoundBuffer m_buffer;
    101 };
    102 
    103 } // namespace sf
    104 
    105 #endif // SFML_SOUNDBUFFERRECORDER_HPP
    106 
    107 
    Specialized SoundRecorder which stores the captured audio data into a sound buffer.
    +
    Abstract base class for capturing sound data.
    +
    Storage for audio samples defining a sound.
    Definition: SoundBuffer.hpp:49
    + +
    + + + + diff --git a/SFML/doc/html/SoundBuffer_8hpp_source.html b/SFML/doc/html/SoundBuffer_8hpp_source.html new file mode 100644 index 0000000..1027769 --- /dev/null +++ b/SFML/doc/html/SoundBuffer_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundBuffer.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDBUFFER_HPP
    26 #define SFML_SOUNDBUFFER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/AlResource.hpp>
    33 #include <SFML/System/Time.hpp>
    34 #include <string>
    35 #include <vector>
    36 #include <set>
    37 
    38 
    39 namespace sf
    40 {
    41 class Sound;
    42 class InputSoundFile;
    43 class InputStream;
    44 
    49 class SFML_AUDIO_API SoundBuffer : AlResource
    50 {
    51 public:
    52 
    57  SoundBuffer();
    58 
    65  SoundBuffer(const SoundBuffer& copy);
    66 
    71  ~SoundBuffer();
    72 
    86  bool loadFromFile(const std::string& filename);
    87 
    102  bool loadFromMemory(const void* data, std::size_t sizeInBytes);
    103 
    117  bool loadFromStream(InputStream& stream);
    118 
    135  bool loadFromSamples(const Int16* samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate);
    136 
    150  bool saveToFile(const std::string& filename) const;
    151 
    164  const Int16* getSamples() const;
    165 
    177  Uint64 getSampleCount() const;
    178 
    191  unsigned int getSampleRate() const;
    192 
    204  unsigned int getChannelCount() const;
    205 
    214  Time getDuration() const;
    215 
    224  SoundBuffer& operator =(const SoundBuffer& right);
    225 
    226 private:
    227 
    228  friend class Sound;
    229 
    238  bool initialize(InputSoundFile& file);
    239 
    249  bool update(unsigned int channelCount, unsigned int sampleRate);
    250 
    257  void attachSound(Sound* sound) const;
    258 
    265  void detachSound(Sound* sound) const;
    266 
    268  // Types
    270  typedef std::set<Sound*> SoundList;
    271 
    273  // Member data
    275  unsigned int m_buffer;
    276  std::vector<Int16> m_samples;
    277  Time m_duration;
    278  mutable SoundList m_sounds;
    279 };
    280 
    281 } // namespace sf
    282 
    283 
    284 #endif // SFML_SOUNDBUFFER_HPP
    285 
    286 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Base class for classes that require an OpenAL context.
    Definition: AlResource.hpp:40
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    Provide read access to sound files.
    +
    Regular sound that can be played in the audio environment.
    Definition: Sound.hpp:45
    +
    Storage for audio samples defining a sound.
    Definition: SoundBuffer.hpp:49
    + +
    + + + + diff --git a/SFML/doc/html/SoundFileFactory_8hpp_source.html b/SFML/doc/html/SoundFileFactory_8hpp_source.html new file mode 100644 index 0000000..cd01224 --- /dev/null +++ b/SFML/doc/html/SoundFileFactory_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundFileFactory.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDFILEFACTORY_HPP
    26 #define SFML_SOUNDFILEFACTORY_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <string>
    33 #include <vector>
    34 
    35 
    36 namespace sf
    37 {
    38 class InputStream;
    39 class SoundFileReader;
    40 class SoundFileWriter;
    41 
    46 class SFML_AUDIO_API SoundFileFactory
    47 {
    48 public:
    49 
    56  template <typename T>
    57  static void registerReader();
    58 
    65  template <typename T>
    66  static void unregisterReader();
    67 
    74  template <typename T>
    75  static void registerWriter();
    76 
    83  template <typename T>
    84  static void unregisterWriter();
    85 
    98  static SoundFileReader* createReaderFromFilename(const std::string& filename);
    99 
    113  static SoundFileReader* createReaderFromMemory(const void* data, std::size_t sizeInBytes);
    114 
    127  static SoundFileReader* createReaderFromStream(InputStream& stream);
    128 
    139  static SoundFileWriter* createWriterFromFilename(const std::string& filename);
    140 
    141 private:
    142 
    144  // Types
    146  struct ReaderFactory
    147  {
    148  bool (*check)(InputStream&);
    149  SoundFileReader* (*create)();
    150  };
    151  typedef std::vector<ReaderFactory> ReaderFactoryArray;
    152 
    153  struct WriterFactory
    154  {
    155  bool (*check)(const std::string&);
    156  SoundFileWriter* (*create)();
    157  };
    158  typedef std::vector<WriterFactory> WriterFactoryArray;
    159 
    161  // Static member data
    163  static ReaderFactoryArray s_readers;
    164  static WriterFactoryArray s_writers;
    165 };
    166 
    167 } // namespace sf
    168 
    169 #include <SFML/Audio/SoundFileFactory.inl>
    170 
    171 #endif // SFML_SOUNDFILEFACTORY_HPP
    172 
    173 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Abstract base class for sound file decoding.
    + +
    Abstract base class for sound file encoding.
    +
    Manages and instantiates sound file readers and writers.
    +
    + + + + diff --git a/SFML/doc/html/SoundFileReader_8hpp_source.html b/SFML/doc/html/SoundFileReader_8hpp_source.html new file mode 100644 index 0000000..bf2ac09 --- /dev/null +++ b/SFML/doc/html/SoundFileReader_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundFileReader.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDFILEREADER_HPP
    26 #define SFML_SOUNDFILEREADER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <string>
    33 
    34 
    35 namespace sf
    36 {
    37 class InputStream;
    38 
    43 class SFML_AUDIO_API SoundFileReader
    44 {
    45 public:
    46 
    51  struct Info
    52  {
    53  Uint64 sampleCount;
    54  unsigned int channelCount;
    55  unsigned int sampleRate;
    56  };
    57 
    62  virtual ~SoundFileReader() {}
    63 
    77  virtual bool open(InputStream& stream, Info& info) = 0;
    78 
    92  virtual void seek(Uint64 sampleOffset) = 0;
    93 
    103  virtual Uint64 read(Int16* samples, Uint64 maxCount) = 0;
    104 };
    105 
    106 } // namespace sf
    107 
    108 
    109 #endif // SFML_SOUNDFILEREADER_HPP
    110 
    111 
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    unsigned int sampleRate
    Samples rate of the sound, in samples per second.
    +
    Abstract base class for sound file decoding.
    +
    unsigned int channelCount
    Number of channels of the sound.
    +
    Structure holding the audio properties of a sound file.
    +
    Uint64 sampleCount
    Total number of samples in the file.
    + +
    virtual ~SoundFileReader()
    Virtual destructor.
    +
    + + + + diff --git a/SFML/doc/html/SoundFileWriter_8hpp_source.html b/SFML/doc/html/SoundFileWriter_8hpp_source.html new file mode 100644 index 0000000..d782433 --- /dev/null +++ b/SFML/doc/html/SoundFileWriter_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundFileWriter.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDFILEWRITER_HPP
    26 #define SFML_SOUNDFILEWRITER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <string>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_AUDIO_API SoundFileWriter
    42 {
    43 public:
    44 
    49  virtual ~SoundFileWriter() {}
    50 
    61  virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount) = 0;
    62 
    70  virtual void write(const Int16* samples, Uint64 count) = 0;
    71 };
    72 
    73 } // namespace sf
    74 
    75 
    76 #endif // SFML_SOUNDFILEWRITER_HPP
    77 
    78 
    virtual ~SoundFileWriter()
    Virtual destructor.
    + +
    Abstract base class for sound file encoding.
    +
    + + + + diff --git a/SFML/doc/html/SoundRecorder_8hpp_source.html b/SFML/doc/html/SoundRecorder_8hpp_source.html new file mode 100644 index 0000000..52fb615 --- /dev/null +++ b/SFML/doc/html/SoundRecorder_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundRecorder.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDRECORDER_HPP
    26 #define SFML_SOUNDRECORDER_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/AlResource.hpp>
    33 #include <SFML/System/Thread.hpp>
    34 #include <SFML/System/Time.hpp>
    35 #include <vector>
    36 #include <string>
    37 
    38 
    39 namespace sf
    40 {
    45 class SFML_AUDIO_API SoundRecorder : AlResource
    46 {
    47 public:
    48 
    53  virtual ~SoundRecorder();
    54 
    77  bool start(unsigned int sampleRate = 44100);
    78 
    85  void stop();
    86 
    97  unsigned int getSampleRate() const;
    98 
    108  static std::vector<std::string> getAvailableDevices();
    109 
    120  static std::string getDefaultDevice();
    121 
    137  bool setDevice(const std::string& name);
    138 
    145  const std::string& getDevice() const;
    146 
    160  void setChannelCount(unsigned int channelCount);
    161 
    173  unsigned int getChannelCount() const;
    174 
    186  static bool isAvailable();
    187 
    188 protected:
    189 
    196  SoundRecorder();
    197 
    214  void setProcessingInterval(Time interval);
    215 
    227  virtual bool onStart();
    228 
    243  virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
    244 
    254  virtual void onStop();
    255 
    256 private:
    257 
    265  void record();
    266 
    275  void processCapturedSamples();
    276 
    283  void cleanup();
    284 
    286  // Member data
    288  Thread m_thread;
    289  std::vector<Int16> m_samples;
    290  unsigned int m_sampleRate;
    291  Time m_processingInterval;
    292  bool m_isCapturing;
    293  std::string m_deviceName;
    294  unsigned int m_channelCount;
    295 };
    296 
    297 } // namespace sf
    298 
    299 
    300 #endif // SFML_SOUNDRECORDER_HPP
    301 
    302 
    Base class for classes that require an OpenAL context.
    Definition: AlResource.hpp:40
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    Abstract base class for capturing sound data.
    + +
    Utility class to manipulate threads.
    Definition: Thread.hpp:48
    +
    + + + + diff --git a/SFML/doc/html/SoundSource_8hpp_source.html b/SFML/doc/html/SoundSource_8hpp_source.html new file mode 100644 index 0000000..8c87aae --- /dev/null +++ b/SFML/doc/html/SoundSource_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundSource.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDSOURCE_HPP
    26 #define SFML_SOUNDSOURCE_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/AlResource.hpp>
    33 #include <SFML/System/Vector3.hpp>
    34 
    35 
    36 namespace sf
    37 {
    42 class SFML_AUDIO_API SoundSource : AlResource
    43 {
    44 public:
    45 
    50  enum Status
    51  {
    54  Playing
    55  };
    56 
    63  SoundSource(const SoundSource& copy);
    64 
    69  virtual ~SoundSource();
    70 
    85  void setPitch(float pitch);
    86 
    98  void setVolume(float volume);
    99 
    114  void setPosition(float x, float y, float z);
    115 
    128  void setPosition(const Vector3f& position);
    129 
    144  void setRelativeToListener(bool relative);
    145 
    161  void setMinDistance(float distance);
    162 
    180  void setAttenuation(float attenuation);
    181 
    190  float getPitch() const;
    191 
    200  float getVolume() const;
    201 
    210  Vector3f getPosition() const;
    211 
    221  bool isRelativeToListener() const;
    222 
    231  float getMinDistance() const;
    232 
    241  float getAttenuation() const;
    242 
    251  SoundSource& operator =(const SoundSource& right);
    252 
    263  virtual void play() = 0;
    264 
    274  virtual void pause() = 0;
    275 
    286  virtual void stop() = 0;
    287 
    294  virtual Status getStatus() const;
    295 
    296 protected:
    297 
    304  SoundSource();
    305 
    307  // Member data
    309  unsigned int m_source;
    310 };
    311 
    312 } // namespace sf
    313 
    314 
    315 #endif // SFML_SOUNDSOURCE_HPP
    316 
    317 
    Base class for classes that require an OpenAL context.
    Definition: AlResource.hpp:40
    +
    Sound is not playing.
    Definition: SoundSource.hpp:52
    +
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    Sound is paused.
    Definition: SoundSource.hpp:53
    +
    unsigned int m_source
    OpenAL source identifier.
    + +
    Status
    Enumeration of the sound source states.
    Definition: SoundSource.hpp:50
    +
    Base class defining a sound&#39;s properties.
    Definition: SoundSource.hpp:42
    +
    + + + + diff --git a/SFML/doc/html/SoundStream_8hpp_source.html b/SFML/doc/html/SoundStream_8hpp_source.html new file mode 100644 index 0000000..202d7a9 --- /dev/null +++ b/SFML/doc/html/SoundStream_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SoundStream.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUNDSTREAM_HPP
    26 #define SFML_SOUNDSTREAM_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/SoundSource.hpp>
    33 #include <SFML/System/Thread.hpp>
    34 #include <SFML/System/Time.hpp>
    35 #include <SFML/System/Mutex.hpp>
    36 #include <cstdlib>
    37 
    38 
    39 namespace sf
    40 {
    45 class SFML_AUDIO_API SoundStream : public SoundSource
    46 {
    47 public:
    48 
    53  struct Chunk
    54  {
    55  const Int16* samples;
    56  std::size_t sampleCount;
    57  };
    58 
    63  virtual ~SoundStream();
    64 
    77  void play();
    78 
    88  void pause();
    89 
    100  void stop();
    101 
    110  unsigned int getChannelCount() const;
    111 
    121  unsigned int getSampleRate() const;
    122 
    129  Status getStatus() const;
    130 
    144  void setPlayingOffset(Time timeOffset);
    145 
    154  Time getPlayingOffset() const;
    155 
    169  void setLoop(bool loop);
    170 
    179  bool getLoop() const;
    180 
    181 protected:
    182 
    183  enum
    184  {
    185  NoLoop = -1
    186  };
    187 
    194  SoundStream();
    195 
    210  void initialize(unsigned int channelCount, unsigned int sampleRate);
    211 
    229  virtual bool onGetData(Chunk& data) = 0;
    230 
    240  virtual void onSeek(Time timeOffset) = 0;
    241 
    252  virtual Int64 onLoop();
    253 
    254 private:
    255 
    263  void streamData();
    264 
    279  bool fillAndPushBuffer(unsigned int bufferNum, bool immediateLoop = false);
    280 
    290  bool fillQueue();
    291 
    298  void clearQueue();
    299 
    300  enum
    301  {
    302  BufferCount = 3,
    303  BufferRetries = 2
    304  };
    305 
    307  // Member data
    309  Thread m_thread;
    310  mutable Mutex m_threadMutex;
    311  Status m_threadStartState;
    312  bool m_isStreaming;
    313  unsigned int m_buffers[BufferCount];
    314  unsigned int m_channelCount;
    315  unsigned int m_sampleRate;
    316  Uint32 m_format;
    317  bool m_loop;
    318  Uint64 m_samplesProcessed;
    319  Int64 m_bufferSeeks[BufferCount];
    320 };
    321 
    322 } // namespace sf
    323 
    324 
    325 #endif // SFML_SOUNDSTREAM_HPP
    326 
    327 
    Structure defining a chunk of audio data to stream.
    Definition: SoundStream.hpp:53
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    const Int16 * samples
    Pointer to the audio samples.
    Definition: SoundStream.hpp:55
    +
    Abstract base class for streamed audio sources.
    Definition: SoundStream.hpp:45
    +
    std::size_t sampleCount
    Number of samples pointed by Samples.
    Definition: SoundStream.hpp:56
    + +
    Base class defining a sound&#39;s properties.
    Definition: SoundSource.hpp:42
    +
    + + + + diff --git a/SFML/doc/html/Sound_8hpp_source.html b/SFML/doc/html/Sound_8hpp_source.html new file mode 100644 index 0000000..03300f1 --- /dev/null +++ b/SFML/doc/html/Sound_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Sound.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SOUND_HPP
    26 #define SFML_SOUND_HPP
    27 
    29 // Headers
    31 #include <SFML/Audio/Export.hpp>
    32 #include <SFML/Audio/SoundSource.hpp>
    33 #include <SFML/System/Time.hpp>
    34 #include <cstdlib>
    35 
    36 
    37 namespace sf
    38 {
    39 class SoundBuffer;
    40 
    45 class SFML_AUDIO_API Sound : public SoundSource
    46 {
    47 public:
    48 
    53  Sound();
    54 
    61  explicit Sound(const SoundBuffer& buffer);
    62 
    69  Sound(const Sound& copy);
    70 
    75  ~Sound();
    76 
    89  void play();
    90 
    100  void pause();
    101 
    112  void stop();
    113 
    126  void setBuffer(const SoundBuffer& buffer);
    127 
    141  void setLoop(bool loop);
    142 
    156  void setPlayingOffset(Time timeOffset);
    157 
    164  const SoundBuffer* getBuffer() const;
    165 
    174  bool getLoop() const;
    175 
    184  Time getPlayingOffset() const;
    185 
    192  Status getStatus() const;
    193 
    202  Sound& operator =(const Sound& right);
    203 
    213  void resetBuffer();
    214 
    215 private:
    216 
    218  // Member data
    220  const SoundBuffer* m_buffer;
    221 };
    222 
    223 } // namespace sf
    224 
    225 
    226 #endif // SFML_SOUND_HPP
    227 
    228 
    Represents a time value.
    Definition: Time.hpp:40
    +
    Regular sound that can be played in the audio environment.
    Definition: Sound.hpp:45
    +
    Storage for audio samples defining a sound.
    Definition: SoundBuffer.hpp:49
    + +
    Status
    Enumeration of the sound source states.
    Definition: SoundSource.hpp:50
    +
    Base class defining a sound&#39;s properties.
    Definition: SoundSource.hpp:42
    +
    + + + + diff --git a/SFML/doc/html/Sprite_8hpp_source.html b/SFML/doc/html/Sprite_8hpp_source.html new file mode 100644 index 0000000..6248236 --- /dev/null +++ b/SFML/doc/html/Sprite_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Sprite.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SPRITE_HPP
    26 #define SFML_SPRITE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Drawable.hpp>
    33 #include <SFML/Graphics/Transformable.hpp>
    34 #include <SFML/Graphics/Vertex.hpp>
    35 #include <SFML/Graphics/Rect.hpp>
    36 
    37 
    38 namespace sf
    39 {
    40 class Texture;
    41 
    47 class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable
    48 {
    49 public:
    50 
    57  Sprite();
    58 
    67  explicit Sprite(const Texture& texture);
    68 
    78  Sprite(const Texture& texture, const IntRect& rectangle);
    79 
    99  void setTexture(const Texture& texture, bool resetRect = false);
    100 
    113  void setTextureRect(const IntRect& rectangle);
    114 
    128  void setColor(const Color& color);
    129 
    142  const Texture* getTexture() const;
    143 
    152  const IntRect& getTextureRect() const;
    153 
    162  const Color& getColor() const;
    163 
    176  FloatRect getLocalBounds() const;
    177 
    190  FloatRect getGlobalBounds() const;
    191 
    192 private:
    193 
    201  virtual void draw(RenderTarget& target, RenderStates states) const;
    202 
    207  void updatePositions();
    208 
    213  void updateTexCoords();
    214 
    216  // Member data
    218  Vertex m_vertices[4];
    219  const Texture* m_texture;
    220  IntRect m_textureRect;
    221 };
    222 
    223 } // namespace sf
    224 
    225 
    226 #endif // SFML_SPRITE_HPP
    227 
    228 
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    Define the states used for drawing to a RenderTarget.
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    Define a point with color and texture coordinates.
    Definition: Vertex.hpp:42
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + + +
    Drawable representation of a texture, with its own transformations, color, etc.
    Definition: Sprite.hpp:47
    +
    Decomposed transform defined by a position, a rotation and a scale.
    +
    + + + + diff --git a/SFML/doc/html/String_8hpp_source.html b/SFML/doc/html/String_8hpp_source.html new file mode 100644 index 0000000..9d7f7af --- /dev/null +++ b/SFML/doc/html/String_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    String.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_STRING_HPP
    26 #define SFML_STRING_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/Utf.hpp>
    33 #include <iterator>
    34 #include <locale>
    35 #include <string>
    36 
    37 
    38 namespace sf
    39 {
    45 class SFML_SYSTEM_API String
    46 {
    47 public:
    48 
    50  // Types
    52  typedef std::basic_string<Uint32>::iterator Iterator;
    53  typedef std::basic_string<Uint32>::const_iterator ConstIterator;
    54 
    56  // Static member data
    58  static const std::size_t InvalidPos;
    59 
    66  String();
    67 
    78  String(char ansiChar, const std::locale& locale = std::locale());
    79 
    86  String(wchar_t wideChar);
    87 
    94  String(Uint32 utf32Char);
    95 
    106  String(const char* ansiString, const std::locale& locale = std::locale());
    107 
    118  String(const std::string& ansiString, const std::locale& locale = std::locale());
    119 
    126  String(const wchar_t* wideString);
    127 
    134  String(const std::wstring& wideString);
    135 
    142  String(const Uint32* utf32String);
    143 
    150  String(const std::basic_string<Uint32>& utf32String);
    151 
    158  String(const String& copy);
    159 
    171  template <typename T>
    172  static String fromUtf8(T begin, T end);
    173 
    185  template <typename T>
    186  static String fromUtf16(T begin, T end);
    187 
    203  template <typename T>
    204  static String fromUtf32(T begin, T end);
    205 
    221  operator std::string() const;
    222 
    236  operator std::wstring() const;
    237 
    253  std::string toAnsiString(const std::locale& locale = std::locale()) const;
    254 
    266  std::wstring toWideString() const;
    267 
    276  std::basic_string<Uint8> toUtf8() const;
    277 
    286  std::basic_string<Uint16> toUtf16() const;
    287 
    299  std::basic_string<Uint32> toUtf32() const;
    300 
    309  String& operator =(const String& right);
    310 
    319  String& operator +=(const String& right);
    320 
    332  Uint32 operator [](std::size_t index) const;
    333 
    345  Uint32& operator [](std::size_t index);
    346 
    355  void clear();
    356 
    365  std::size_t getSize() const;
    366 
    375  bool isEmpty() const;
    376 
    387  void erase(std::size_t position, std::size_t count = 1);
    388 
    399  void insert(std::size_t position, const String& str);
    400 
    413  std::size_t find(const String& str, std::size_t start = 0) const;
    414 
    427  void replace(std::size_t position, std::size_t length, const String& replaceWith);
    428 
    439  void replace(const String& searchFor, const String& replaceWith);
    440 
    456  String substring(std::size_t position, std::size_t length = InvalidPos) const;
    457 
    469  const Uint32* getData() const;
    470 
    479  Iterator begin();
    480 
    489  ConstIterator begin() const;
    490 
    503  Iterator end();
    504 
    517  ConstIterator end() const;
    518 
    519 private:
    520 
    521  friend SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
    522  friend SFML_SYSTEM_API bool operator <(const String& left, const String& right);
    523 
    525  // Member data
    527  std::basic_string<Uint32> m_string;
    528 };
    529 
    540 SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
    541 
    552 SFML_SYSTEM_API bool operator !=(const String& left, const String& right);
    553 
    564 SFML_SYSTEM_API bool operator <(const String& left, const String& right);
    565 
    576 SFML_SYSTEM_API bool operator >(const String& left, const String& right);
    577 
    588 SFML_SYSTEM_API bool operator <=(const String& left, const String& right);
    589 
    600 SFML_SYSTEM_API bool operator >=(const String& left, const String& right);
    601 
    612 SFML_SYSTEM_API String operator +(const String& left, const String& right);
    613 
    614 #include <SFML/System/String.inl>
    615 
    616 } // namespace sf
    617 
    618 
    619 #endif // SFML_STRING_HPP
    620 
    621 
    std::basic_string< Uint32 >::iterator Iterator
    Iterator type.
    Definition: String.hpp:52
    +
    static const std::size_t InvalidPos
    Represents an invalid position in the string.
    Definition: String.hpp:58
    +
    std::basic_string< Uint32 >::const_iterator ConstIterator
    Read-only iterator type.
    Definition: String.hpp:53
    + +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    + + + + diff --git a/SFML/doc/html/System_2Export_8hpp_source.html b/SFML/doc/html/System_2Export_8hpp_source.html new file mode 100644 index 0000000..8e6d10b --- /dev/null +++ b/SFML/doc/html/System_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    System/Export.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SYSTEM_EXPORT_HPP
    26 #define SFML_SYSTEM_EXPORT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    35 // Define portable import / export macros
    37 #if defined(SFML_SYSTEM_EXPORTS)
    38 
    39  #define SFML_SYSTEM_API SFML_API_EXPORT
    40 
    41 #else
    42 
    43  #define SFML_SYSTEM_API SFML_API_IMPORT
    44 
    45 #endif
    46 
    47 
    48 #endif // SFML_SYSTEM_EXPORT_HPP
    + + + + diff --git a/SFML/doc/html/System_8hpp_source.html b/SFML/doc/html/System_8hpp_source.html new file mode 100644 index 0000000..58f050c --- /dev/null +++ b/SFML/doc/html/System_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    System.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SYSTEM_HPP
    26 #define SFML_SYSTEM_HPP
    27 
    29 // Headers
    31 
    32 #include <SFML/Config.hpp>
    33 #include <SFML/System/Clock.hpp>
    34 #include <SFML/System/Err.hpp>
    35 #include <SFML/System/FileInputStream.hpp>
    36 #include <SFML/System/InputStream.hpp>
    37 #include <SFML/System/Lock.hpp>
    38 #include <SFML/System/MemoryInputStream.hpp>
    39 #include <SFML/System/Mutex.hpp>
    40 #include <SFML/System/NonCopyable.hpp>
    41 #include <SFML/System/Sleep.hpp>
    42 #include <SFML/System/String.hpp>
    43 #include <SFML/System/Thread.hpp>
    44 #include <SFML/System/ThreadLocal.hpp>
    45 #include <SFML/System/ThreadLocalPtr.hpp>
    46 #include <SFML/System/Time.hpp>
    47 #include <SFML/System/Utf.hpp>
    48 #include <SFML/System/Vector2.hpp>
    49 #include <SFML/System/Vector3.hpp>
    50 
    51 #endif // SFML_SYSTEM_HPP
    52 
    + + + + diff --git a/SFML/doc/html/TcpListener_8hpp_source.html b/SFML/doc/html/TcpListener_8hpp_source.html new file mode 100644 index 0000000..5638eb0 --- /dev/null +++ b/SFML/doc/html/TcpListener_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    TcpListener.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TCPLISTENER_HPP
    26 #define SFML_TCPLISTENER_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/Socket.hpp>
    33 #include <SFML/Network/IpAddress.hpp>
    34 
    35 
    36 namespace sf
    37 {
    38 class TcpSocket;
    39 
    44 class SFML_NETWORK_API TcpListener : public Socket
    45 {
    46 public:
    47 
    52  TcpListener();
    53 
    65  unsigned short getLocalPort() const;
    66 
    85  Status listen(unsigned short port, const IpAddress& address = IpAddress::Any);
    86 
    96  void close();
    97 
    111  Status accept(TcpSocket& socket);
    112 };
    113 
    114 
    115 } // namespace sf
    116 
    117 
    118 #endif // SFML_TCPLISTENER_HPP
    119 
    120 
    static const IpAddress Any
    Value representing any address (0.0.0.0)
    Definition: IpAddress.hpp:185
    +
    Status
    Status codes that may be returned by socket functions.
    Definition: Socket.hpp:53
    +
    Base class for all the socket types.
    Definition: Socket.hpp:45
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    +
    Specialized socket using the TCP protocol.
    Definition: TcpSocket.hpp:46
    +
    Socket that listens to new TCP connections.
    Definition: TcpListener.hpp:44
    + +
    + + + + diff --git a/SFML/doc/html/TcpSocket_8hpp_source.html b/SFML/doc/html/TcpSocket_8hpp_source.html new file mode 100644 index 0000000..3b8e6f9 --- /dev/null +++ b/SFML/doc/html/TcpSocket_8hpp_source.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    TcpSocket.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TCPSOCKET_HPP
    26 #define SFML_TCPSOCKET_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/Socket.hpp>
    33 #include <SFML/System/Time.hpp>
    34 
    35 
    36 namespace sf
    37 {
    38 class TcpListener;
    39 class IpAddress;
    40 class Packet;
    41 
    46 class SFML_NETWORK_API TcpSocket : public Socket
    47 {
    48 public:
    49 
    54  TcpSocket();
    55 
    66  unsigned short getLocalPort() const;
    67 
    79  IpAddress getRemoteAddress() const;
    80 
    92  unsigned short getRemotePort() const;
    93 
    112  Status connect(const IpAddress& remoteAddress, unsigned short remotePort, Time timeout = Time::Zero);
    113 
    123  void disconnect();
    124 
    141  Status send(const void* data, std::size_t size);
    142 
    157  Status send(const void* data, std::size_t size, std::size_t& sent);
    158 
    175  Status receive(void* data, std::size_t size, std::size_t& received);
    176 
    193  Status send(Packet& packet);
    194 
    209  Status receive(Packet& packet);
    210 
    211 private:
    212 
    213  friend class TcpListener;
    214 
    219  struct PendingPacket
    220  {
    221  PendingPacket();
    222 
    223  Uint32 Size;
    224  std::size_t SizeReceived;
    225  std::vector<char> Data;
    226  };
    227 
    229  // Member data
    231  PendingPacket m_pendingPacket;
    232 };
    233 
    234 } // namespace sf
    235 
    236 
    237 #endif // SFML_TCPSOCKET_HPP
    238 
    239 
    Represents a time value.
    Definition: Time.hpp:40
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    +
    Status
    Status codes that may be returned by socket functions.
    Definition: Socket.hpp:53
    +
    Base class for all the socket types.
    Definition: Socket.hpp:45
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    +
    Utility class to build blocks of data to transfer over the network.
    Definition: Packet.hpp:47
    +
    Specialized socket using the TCP protocol.
    Definition: TcpSocket.hpp:46
    +
    Socket that listens to new TCP connections.
    Definition: TcpListener.hpp:44
    + +
    + + + + diff --git a/SFML/doc/html/Text_8hpp_source.html b/SFML/doc/html/Text_8hpp_source.html new file mode 100644 index 0000000..46ab847 --- /dev/null +++ b/SFML/doc/html/Text_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Text.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TEXT_HPP
    26 #define SFML_TEXT_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Drawable.hpp>
    33 #include <SFML/Graphics/Transformable.hpp>
    34 #include <SFML/Graphics/Font.hpp>
    35 #include <SFML/Graphics/Rect.hpp>
    36 #include <SFML/Graphics/VertexArray.hpp>
    37 #include <SFML/System/String.hpp>
    38 #include <string>
    39 #include <vector>
    40 
    41 
    42 namespace sf
    43 {
    48 class SFML_GRAPHICS_API Text : public Drawable, public Transformable
    49 {
    50 public:
    51 
    56  enum Style
    57  {
    58  Regular = 0,
    59  Bold = 1 << 0,
    60  Italic = 1 << 1,
    61  Underlined = 1 << 2,
    62  StrikeThrough = 1 << 3
    63  };
    64 
    71  Text();
    72 
    88  Text(const String& string, const Font& font, unsigned int characterSize = 30);
    89 
    109  void setString(const String& string);
    110 
    126  void setFont(const Font& font);
    127 
    145  void setCharacterSize(unsigned int size);
    146 
    159  void setLineSpacing(float spacingFactor);
    160 
    178  void setLetterSpacing(float spacingFactor);
    179 
    192  void setStyle(Uint32 style);
    193 
    210  SFML_DEPRECATED void setColor(const Color& color);
    211 
    224  void setFillColor(const Color& color);
    225 
    236  void setOutlineColor(const Color& color);
    237 
    251  void setOutlineThickness(float thickness);
    252 
    270  const String& getString() const;
    271 
    284  const Font* getFont() const;
    285 
    294  unsigned int getCharacterSize() const;
    295 
    304  float getLetterSpacing() const;
    305 
    314  float getLineSpacing() const;
    315 
    324  Uint32 getStyle() const;
    325 
    338  SFML_DEPRECATED const Color& getColor() const;
    339 
    348  const Color& getFillColor() const;
    349 
    358  const Color& getOutlineColor() const;
    359 
    368  float getOutlineThickness() const;
    369 
    385  Vector2f findCharacterPos(std::size_t index) const;
    386 
    399  FloatRect getLocalBounds() const;
    400 
    413  FloatRect getGlobalBounds() const;
    414 
    415 private:
    416 
    424  virtual void draw(RenderTarget& target, RenderStates states) const;
    425 
    433  void ensureGeometryUpdate() const;
    434 
    436  // Member data
    438  String m_string;
    439  const Font* m_font;
    440  unsigned int m_characterSize;
    441  float m_letterSpacingFactor;
    442  float m_lineSpacingFactor;
    443  Uint32 m_style;
    444  Color m_fillColor;
    445  Color m_outlineColor;
    446  float m_outlineThickness;
    447  mutable VertexArray m_vertices;
    448  mutable VertexArray m_outlineVertices;
    449  mutable FloatRect m_bounds;
    450  mutable bool m_geometryNeedUpdate;
    451  mutable Uint64 m_fontTextureId;
    452 };
    453 
    454 } // namespace sf
    455 
    456 
    457 #endif // SFML_TEXT_HPP
    458 
    459 
    Define the states used for drawing to a RenderTarget.
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    Style
    Enumeration of the string drawing styles.
    Definition: Text.hpp:56
    +
    Define a set of one or more 2D primitives.
    Definition: VertexArray.hpp:45
    +
    Graphical text that can be drawn to a render target.
    Definition: Text.hpp:48
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + + +
    Class for loading and manipulating character fonts.
    Definition: Font.hpp:50
    + +
    Decomposed transform defined by a position, a rotation and a scale.
    +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    + + + + diff --git a/SFML/doc/html/Texture_8hpp_source.html b/SFML/doc/html/Texture_8hpp_source.html new file mode 100644 index 0000000..649dda0 --- /dev/null +++ b/SFML/doc/html/Texture_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Texture.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TEXTURE_HPP
    26 #define SFML_TEXTURE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Image.hpp>
    33 #include <SFML/Window/GlResource.hpp>
    34 
    35 
    36 namespace sf
    37 {
    38 class InputStream;
    39 class RenderTarget;
    40 class RenderTexture;
    41 class Text;
    42 class Window;
    43 
    48 class SFML_GRAPHICS_API Texture : GlResource
    49 {
    50 public:
    51 
    57  {
    59  Pixels
    60  };
    61 
    62 public:
    63 
    70  Texture();
    71 
    78  Texture(const Texture& copy);
    79 
    84  ~Texture();
    85 
    97  bool create(unsigned int width, unsigned int height);
    98 
    128  bool loadFromFile(const std::string& filename, const IntRect& area = IntRect());
    129 
    160  bool loadFromMemory(const void* data, std::size_t size, const IntRect& area = IntRect());
    161 
    191  bool loadFromStream(InputStream& stream, const IntRect& area = IntRect());
    192 
    215  bool loadFromImage(const Image& image, const IntRect& area = IntRect());
    216 
    223  Vector2u getSize() const;
    224 
    238  Image copyToImage() const;
    239 
    256  void update(const Uint8* pixels);
    257 
    278  void update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y);
    279 
    298  void update(const Texture& texture);
    299 
    315  void update(const Texture& texture, unsigned int x, unsigned int y);
    316 
    335  void update(const Image& image);
    336 
    352  void update(const Image& image, unsigned int x, unsigned int y);
    353 
    372  void update(const Window& window);
    373 
    389  void update(const Window& window, unsigned int x, unsigned int y);
    390 
    405  void setSmooth(bool smooth);
    406 
    415  bool isSmooth() const;
    416 
    440  void setSrgb(bool sRgb);
    441 
    450  bool isSrgb() const;
    451 
    474  void setRepeated(bool repeated);
    475 
    484  bool isRepeated() const;
    485 
    509  bool generateMipmap();
    510 
    519  Texture& operator =(const Texture& right);
    520 
    527  void swap(Texture& right);
    528 
    539  unsigned int getNativeHandle() const;
    540 
    572  static void bind(const Texture* texture, CoordinateType coordinateType = Normalized);
    573 
    584  static unsigned int getMaximumSize();
    585 
    586 private:
    587 
    588  friend class Text;
    589  friend class RenderTexture;
    590  friend class RenderTarget;
    591 
    605  static unsigned int getValidSize(unsigned int size);
    606 
    614  void invalidateMipmap();
    615 
    617  // Member data
    619  Vector2u m_size;
    620  Vector2u m_actualSize;
    621  unsigned int m_texture;
    622  bool m_isSmooth;
    623  bool m_sRgb;
    624  bool m_isRepeated;
    625  mutable bool m_pixelsFlipped;
    626  bool m_fboAttachment;
    627  bool m_hasMipmap;
    628  Uint64 m_cacheId;
    629 };
    630 
    631 } // namespace sf
    632 
    633 
    634 #endif // SFML_TEXTURE_HPP
    635 
    Window that serves as a target for OpenGL rendering.
    +
    Abstract class for custom file input streams.
    Definition: InputStream.hpp:41
    +
    Image living on the graphics card that can be used for drawing.
    Definition: Texture.hpp:48
    +
    CoordinateType
    Types of texture coordinates that can be used for rendering.
    Definition: Texture.hpp:56
    +
    Target for off-screen 2D rendering into a texture.
    +
    Graphical text that can be drawn to a render target.
    Definition: Text.hpp:48
    +
    Base class for all render targets (window, texture, ...)
    +
    Texture coordinates in range [0 .. 1].
    Definition: Texture.hpp:58
    + + + +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    Class for loading, manipulating and saving images.
    Definition: Image.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/ThreadLocalPtr_8hpp_source.html b/SFML/doc/html/ThreadLocalPtr_8hpp_source.html new file mode 100644 index 0000000..7357749 --- /dev/null +++ b/SFML/doc/html/ThreadLocalPtr_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    ThreadLocalPtr.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_THREADLOCALPTR_HPP
    26 #define SFML_THREADLOCALPTR_HPP
    27 
    29 // Headers
    31 #include <SFML/System/ThreadLocal.hpp>
    32 
    33 
    34 namespace sf
    35 {
    40 template <typename T>
    41 class ThreadLocalPtr : private ThreadLocal
    42 {
    43 public:
    44 
    51  ThreadLocalPtr(T* value = NULL);
    52 
    62  T& operator *() const;
    63 
    73  T* operator ->() const;
    74 
    82  operator T*() const;
    83 
    92  ThreadLocalPtr<T>& operator =(T* value);
    93 
    103 };
    104 
    105 } // namespace sf
    106 
    107 #include <SFML/System/ThreadLocalPtr.inl>
    108 
    109 
    110 #endif // SFML_THREADLOCALPTR_HPP
    111 
    112 
    Pointer to a thread-local variable.
    +
    ThreadLocalPtr(T *value=NULL)
    Default constructor.
    +
    ThreadLocalPtr< T > & operator=(T *value)
    Assignment operator for a raw pointer parameter.
    +
    T & operator*() const
    Overload of unary operator *.
    + +
    T * operator->() const
    Overload of operator ->
    +
    Defines variables with thread-local storage.
    Definition: ThreadLocal.hpp:47
    +
    + + + + diff --git a/SFML/doc/html/ThreadLocal_8hpp_source.html b/SFML/doc/html/ThreadLocal_8hpp_source.html new file mode 100644 index 0000000..3542ae4 --- /dev/null +++ b/SFML/doc/html/ThreadLocal_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    ThreadLocal.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_THREADLOCAL_HPP
    26 #define SFML_THREADLOCAL_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 #include <cstdlib>
    34 
    35 
    36 namespace sf
    37 {
    38 namespace priv
    39 {
    40  class ThreadLocalImpl;
    41 }
    42 
    47 class SFML_SYSTEM_API ThreadLocal : NonCopyable
    48 {
    49 public:
    50 
    57  ThreadLocal(void* value = NULL);
    58 
    63  ~ThreadLocal();
    64 
    71  void setValue(void* value);
    72 
    79  void* getValue() const;
    80 
    81 private:
    82 
    84  // Member data
    86  priv::ThreadLocalImpl* m_impl;
    87 };
    88 
    89 } // namespace sf
    90 
    91 
    92 #endif // SFML_THREADLOCAL_HPP
    93 
    94 
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    Defines variables with thread-local storage.
    Definition: ThreadLocal.hpp:47
    +
    + + + + diff --git a/SFML/doc/html/Thread_8hpp_source.html b/SFML/doc/html/Thread_8hpp_source.html new file mode 100644 index 0000000..e72cc8a --- /dev/null +++ b/SFML/doc/html/Thread_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Thread.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_THREAD_HPP
    26 #define SFML_THREAD_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 #include <SFML/System/NonCopyable.hpp>
    33 #include <cstdlib>
    34 
    35 
    36 namespace sf
    37 {
    38 namespace priv
    39 {
    40  class ThreadImpl;
    41  struct ThreadFunc;
    42 }
    43 
    48 class SFML_SYSTEM_API Thread : NonCopyable
    49 {
    50 public:
    51 
    74  template <typename F>
    75  Thread(F function);
    76 
    102  template <typename F, typename A>
    103  Thread(F function, A argument);
    104 
    125  template <typename C>
    126  Thread(void(C::*function)(), C* object);
    127 
    135  ~Thread();
    136 
    146  void launch();
    147 
    159  void wait();
    160 
    172  void terminate();
    173 
    174 private:
    175 
    176  friend class priv::ThreadImpl;
    177 
    184  void run();
    185 
    187  // Member data
    189  priv::ThreadImpl* m_impl;
    190  priv::ThreadFunc* m_entryPoint;
    191 };
    192 
    193 #include <SFML/System/Thread.inl>
    194 
    195 } // namespace sf
    196 
    197 #endif // SFML_THREAD_HPP
    198 
    199 
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    + +
    Utility class to manipulate threads.
    Definition: Thread.hpp:48
    +
    + + + + diff --git a/SFML/doc/html/Time_8hpp_source.html b/SFML/doc/html/Time_8hpp_source.html new file mode 100644 index 0000000..b0115d6 --- /dev/null +++ b/SFML/doc/html/Time_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Time.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TIME_HPP
    26 #define SFML_TIME_HPP
    27 
    29 // Headers
    31 #include <SFML/System/Export.hpp>
    32 
    33 
    34 namespace sf
    35 {
    40 class SFML_SYSTEM_API Time
    41 {
    42 public:
    43 
    50  Time();
    51 
    60  float asSeconds() const;
    61 
    70  Int32 asMilliseconds() const;
    71 
    80  Int64 asMicroseconds() const;
    81 
    83  // Static member data
    85  static const Time Zero;
    86 
    87 private:
    88 
    89  friend SFML_SYSTEM_API Time seconds(float);
    90  friend SFML_SYSTEM_API Time milliseconds(Int32);
    91  friend SFML_SYSTEM_API Time microseconds(Int64);
    92 
    102  explicit Time(Int64 microseconds);
    103 
    104 private:
    105 
    107  // Member data
    109  Int64 m_microseconds;
    110 };
    111 
    123 SFML_SYSTEM_API Time seconds(float amount);
    124 
    136 SFML_SYSTEM_API Time milliseconds(Int32 amount);
    137 
    149 SFML_SYSTEM_API Time microseconds(Int64 amount);
    150 
    161 SFML_SYSTEM_API bool operator ==(Time left, Time right);
    162 
    173 SFML_SYSTEM_API bool operator !=(Time left, Time right);
    174 
    185 SFML_SYSTEM_API bool operator <(Time left, Time right);
    186 
    197 SFML_SYSTEM_API bool operator >(Time left, Time right);
    198 
    209 SFML_SYSTEM_API bool operator <=(Time left, Time right);
    210 
    221 SFML_SYSTEM_API bool operator >=(Time left, Time right);
    222 
    232 SFML_SYSTEM_API Time operator -(Time right);
    233 
    244 SFML_SYSTEM_API Time operator +(Time left, Time right);
    245 
    256 SFML_SYSTEM_API Time& operator +=(Time& left, Time right);
    257 
    268 SFML_SYSTEM_API Time operator -(Time left, Time right);
    269 
    280 SFML_SYSTEM_API Time& operator -=(Time& left, Time right);
    281 
    292 SFML_SYSTEM_API Time operator *(Time left, float right);
    293 
    304 SFML_SYSTEM_API Time operator *(Time left, Int64 right);
    305 
    316 SFML_SYSTEM_API Time operator *(float left, Time right);
    317 
    328 SFML_SYSTEM_API Time operator *(Int64 left, Time right);
    329 
    340 SFML_SYSTEM_API Time& operator *=(Time& left, float right);
    341 
    352 SFML_SYSTEM_API Time& operator *=(Time& left, Int64 right);
    353 
    364 SFML_SYSTEM_API Time operator /(Time left, float right);
    365 
    376 SFML_SYSTEM_API Time operator /(Time left, Int64 right);
    377 
    388 SFML_SYSTEM_API Time& operator /=(Time& left, float right);
    389 
    400 SFML_SYSTEM_API Time& operator /=(Time& left, Int64 right);
    401 
    412 SFML_SYSTEM_API float operator /(Time left, Time right);
    413 
    424 SFML_SYSTEM_API Time operator %(Time left, Time right);
    425 
    436 SFML_SYSTEM_API Time& operator %=(Time& left, Time right);
    437 
    438 } // namespace sf
    439 
    440 
    441 #endif // SFML_TIME_HPP
    442 
    443 
    Represents a time value.
    Definition: Time.hpp:40
    +
    static const Time Zero
    Predefined "zero" time value.
    Definition: Time.hpp:85
    + +
    + + + + diff --git a/SFML/doc/html/Touch_8hpp_source.html b/SFML/doc/html/Touch_8hpp_source.html new file mode 100644 index 0000000..b5004cb --- /dev/null +++ b/SFML/doc/html/Touch_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Touch.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TOUCH_HPP
    26 #define SFML_TOUCH_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <SFML/System/Vector2.hpp>
    33 
    34 
    35 namespace sf
    36 {
    37 class Window;
    38 
    43 class SFML_WINDOW_API Touch
    44 {
    45 public:
    46 
    55  static bool isDown(unsigned int finger);
    56 
    68  static Vector2i getPosition(unsigned int finger);
    69 
    82  static Vector2i getPosition(unsigned int finger, const Window& relativeTo);
    83 };
    84 
    85 } // namespace sf
    86 
    87 
    88 #endif // SFML_TOUCH_HPP
    89 
    90 
    Give access to the real-time state of the touches.
    Definition: Touch.hpp:43
    +
    Window that serves as a target for OpenGL rendering.
    + +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    + + + + diff --git a/SFML/doc/html/Transform_8hpp_source.html b/SFML/doc/html/Transform_8hpp_source.html new file mode 100644 index 0000000..b24c599 --- /dev/null +++ b/SFML/doc/html/Transform_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Transform.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TRANSFORM_HPP
    26 #define SFML_TRANSFORM_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Rect.hpp>
    33 #include <SFML/System/Vector2.hpp>
    34 
    35 
    36 namespace sf
    37 {
    42 class SFML_GRAPHICS_API Transform
    43 {
    44 public:
    45 
    52  Transform();
    53 
    68  Transform(float a00, float a01, float a02,
    69  float a10, float a11, float a12,
    70  float a20, float a21, float a22);
    71 
    87  const float* getMatrix() const;
    88 
    98  Transform getInverse() const;
    99 
    109  Vector2f transformPoint(float x, float y) const;
    110 
    119  Vector2f transformPoint(const Vector2f& point) const;
    120 
    135  FloatRect transformRect(const FloatRect& rectangle) const;
    136 
    149  Transform& combine(const Transform& transform);
    150 
    169  Transform& translate(float x, float y);
    170 
    188  Transform& translate(const Vector2f& offset);
    189 
    207  Transform& rotate(float angle);
    208 
    233  Transform& rotate(float angle, float centerX, float centerY);
    234 
    258  Transform& rotate(float angle, const Vector2f& center);
    259 
    278  Transform& scale(float scaleX, float scaleY);
    279 
    305  Transform& scale(float scaleX, float scaleY, float centerX, float centerY);
    306 
    324  Transform& scale(const Vector2f& factors);
    325 
    349  Transform& scale(const Vector2f& factors, const Vector2f& center);
    350 
    352  // Static member data
    354  static const Transform Identity;
    355 
    356 private:
    357 
    359  // Member data
    361  float m_matrix[16];
    362 };
    363 
    376 SFML_GRAPHICS_API Transform operator *(const Transform& left, const Transform& right);
    377 
    390 SFML_GRAPHICS_API Transform& operator *=(Transform& left, const Transform& right);
    391 
    404 SFML_GRAPHICS_API Vector2f operator *(const Transform& left, const Vector2f& right);
    405 
    419 SFML_GRAPHICS_API bool operator ==(const Transform& left, const Transform& right);
    420 
    433 SFML_GRAPHICS_API bool operator !=(const Transform& left, const Transform& right);
    434 
    435 } // namespace sf
    436 
    437 
    438 #endif // SFML_TRANSFORM_HPP
    439 
    440 
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    +
    static const Transform Identity
    The identity transform (does nothing)
    Definition: Transform.hpp:354
    + + + +
    + + + + diff --git a/SFML/doc/html/Transformable_8hpp_source.html b/SFML/doc/html/Transformable_8hpp_source.html new file mode 100644 index 0000000..d89ccaa --- /dev/null +++ b/SFML/doc/html/Transformable_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Transformable.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_TRANSFORMABLE_HPP
    26 #define SFML_TRANSFORMABLE_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Transform.hpp>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_GRAPHICS_API Transformable
    42 {
    43 public:
    44 
    49  Transformable();
    50 
    55  virtual ~Transformable();
    56 
    70  void setPosition(float x, float y);
    71 
    84  void setPosition(const Vector2f& position);
    85 
    98  void setRotation(float angle);
    99 
    113  void setScale(float factorX, float factorY);
    114 
    127  void setScale(const Vector2f& factors);
    128 
    145  void setOrigin(float x, float y);
    146 
    162  void setOrigin(const Vector2f& origin);
    163 
    172  const Vector2f& getPosition() const;
    173 
    184  float getRotation() const;
    185 
    194  const Vector2f& getScale() const;
    195 
    204  const Vector2f& getOrigin() const;
    205 
    223  void move(float offsetX, float offsetY);
    224 
    240  void move(const Vector2f& offset);
    241 
    255  void rotate(float angle);
    256 
    274  void scale(float factorX, float factorY);
    275 
    292  void scale(const Vector2f& factor);
    293 
    302  const Transform& getTransform() const;
    303 
    312  const Transform& getInverseTransform() const;
    313 
    314 private:
    315 
    317  // Member data
    319  Vector2f m_origin;
    320  Vector2f m_position;
    321  float m_rotation;
    322  Vector2f m_scale;
    323  mutable Transform m_transform;
    324  mutable bool m_transformNeedUpdate;
    325  mutable Transform m_inverseTransform;
    326  mutable bool m_inverseTransformNeedUpdate;
    327 };
    328 
    329 } // namespace sf
    330 
    331 
    332 #endif // SFML_TRANSFORMABLE_HPP
    333 
    334 
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    + + +
    Decomposed transform defined by a position, a rotation and a scale.
    +
    + + + + diff --git a/SFML/doc/html/UdpSocket_8hpp_source.html b/SFML/doc/html/UdpSocket_8hpp_source.html new file mode 100644 index 0000000..864adc4 --- /dev/null +++ b/SFML/doc/html/UdpSocket_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    UdpSocket.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_UDPSOCKET_HPP
    26 #define SFML_UDPSOCKET_HPP
    27 
    29 // Headers
    31 #include <SFML/Network/Export.hpp>
    32 #include <SFML/Network/Socket.hpp>
    33 #include <SFML/Network/IpAddress.hpp>
    34 #include <vector>
    35 
    36 
    37 namespace sf
    38 {
    39 class Packet;
    40 
    45 class SFML_NETWORK_API UdpSocket : public Socket
    46 {
    47 public:
    48 
    50  // Constants
    52  enum
    53  {
    54  MaxDatagramSize = 65507
    55  };
    56 
    61  UdpSocket();
    62 
    74  unsigned short getLocalPort() const;
    75 
    98  Status bind(unsigned short port, const IpAddress& address = IpAddress::Any);
    99 
    112  void unbind();
    113 
    131  Status send(const void* data, std::size_t size, const IpAddress& remoteAddress, unsigned short remotePort);
    132 
    154  Status receive(void* data, std::size_t size, std::size_t& received, IpAddress& remoteAddress, unsigned short& remotePort);
    155 
    172  Status send(Packet& packet, const IpAddress& remoteAddress, unsigned short remotePort);
    173 
    189  Status receive(Packet& packet, IpAddress& remoteAddress, unsigned short& remotePort);
    190 
    191 private:
    192 
    194  // Member data
    196  std::vector<char> m_buffer;
    197 };
    198 
    199 } // namespace sf
    200 
    201 
    202 #endif // SFML_UDPSOCKET_HPP
    203 
    204 
    static const IpAddress Any
    Value representing any address (0.0.0.0)
    Definition: IpAddress.hpp:185
    +
    Specialized socket using the UDP protocol.
    Definition: UdpSocket.hpp:45
    +
    Base class for all the socket types.
    Definition: Socket.hpp:45
    +
    Encapsulate an IPv4 network address.
    Definition: IpAddress.hpp:44
    +
    Utility class to build blocks of data to transfer over the network.
    Definition: Packet.hpp:47
    + +
    + + + + diff --git a/SFML/doc/html/Utf_8hpp_source.html b/SFML/doc/html/Utf_8hpp_source.html new file mode 100644 index 0000000..e73989e --- /dev/null +++ b/SFML/doc/html/Utf_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Utf.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_UTF_HPP
    26 #define SFML_UTF_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 #include <algorithm>
    33 #include <locale>
    34 #include <string>
    35 #include <cstdlib>
    36 
    37 
    38 namespace sf
    39 {
    40 template <unsigned int N>
    41 class Utf;
    42 
    47 template <>
    48 class Utf<8>
    49 {
    50 public:
    51 
    66  template <typename In>
    67  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
    68 
    82  template <typename Out>
    83  static Out encode(Uint32 input, Out output, Uint8 replacement = 0);
    84 
    97  template <typename In>
    98  static In next(In begin, In end);
    99 
    113  template <typename In>
    114  static std::size_t count(In begin, In end);
    115 
    130  template <typename In, typename Out>
    131  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
    132 
    143  template <typename In, typename Out>
    144  static Out fromWide(In begin, In end, Out output);
    145 
    156  template <typename In, typename Out>
    157  static Out fromLatin1(In begin, In end, Out output);
    158 
    174  template <typename In, typename Out>
    175  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
    176 
    188  template <typename In, typename Out>
    189  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
    190 
    202  template <typename In, typename Out>
    203  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
    204 
    220  template <typename In, typename Out>
    221  static Out toUtf8(In begin, In end, Out output);
    222 
    233  template <typename In, typename Out>
    234  static Out toUtf16(In begin, In end, Out output);
    235 
    246  template <typename In, typename Out>
    247  static Out toUtf32(In begin, In end, Out output);
    248 };
    249 
    254 template <>
    255 class Utf<16>
    256 {
    257 public:
    258 
    273  template <typename In>
    274  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
    275 
    289  template <typename Out>
    290  static Out encode(Uint32 input, Out output, Uint16 replacement = 0);
    291 
    304  template <typename In>
    305  static In next(In begin, In end);
    306 
    320  template <typename In>
    321  static std::size_t count(In begin, In end);
    322 
    337  template <typename In, typename Out>
    338  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
    339 
    350  template <typename In, typename Out>
    351  static Out fromWide(In begin, In end, Out output);
    352 
    363  template <typename In, typename Out>
    364  static Out fromLatin1(In begin, In end, Out output);
    365 
    381  template <typename In, typename Out>
    382  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
    383 
    395  template <typename In, typename Out>
    396  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
    397 
    409  template <typename In, typename Out>
    410  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
    411 
    422  template <typename In, typename Out>
    423  static Out toUtf8(In begin, In end, Out output);
    424 
    440  template <typename In, typename Out>
    441  static Out toUtf16(In begin, In end, Out output);
    442 
    453  template <typename In, typename Out>
    454  static Out toUtf32(In begin, In end, Out output);
    455 };
    456 
    461 template <>
    462 class Utf<32>
    463 {
    464 public:
    465 
    481  template <typename In>
    482  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
    483 
    498  template <typename Out>
    499  static Out encode(Uint32 input, Out output, Uint32 replacement = 0);
    500 
    513  template <typename In>
    514  static In next(In begin, In end);
    515 
    528  template <typename In>
    529  static std::size_t count(In begin, In end);
    530 
    545  template <typename In, typename Out>
    546  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
    547 
    558  template <typename In, typename Out>
    559  static Out fromWide(In begin, In end, Out output);
    560 
    571  template <typename In, typename Out>
    572  static Out fromLatin1(In begin, In end, Out output);
    573 
    589  template <typename In, typename Out>
    590  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
    591 
    603  template <typename In, typename Out>
    604  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
    605 
    617  template <typename In, typename Out>
    618  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
    619 
    630  template <typename In, typename Out>
    631  static Out toUtf8(In begin, In end, Out output);
    632 
    643  template <typename In, typename Out>
    644  static Out toUtf16(In begin, In end, Out output);
    645 
    661  template <typename In, typename Out>
    662  static Out toUtf32(In begin, In end, Out output);
    663 
    677  template <typename In>
    678  static Uint32 decodeAnsi(In input, const std::locale& locale = std::locale());
    679 
    692  template <typename In>
    693  static Uint32 decodeWide(In input);
    694 
    710  template <typename Out>
    711  static Out encodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale());
    712 
    727  template <typename Out>
    728  static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0);
    729 };
    730 
    731 #include <SFML/System/Utf.inl>
    732 
    733 // Make typedefs to get rid of the template syntax
    734 typedef Utf<8> Utf8;
    735 typedef Utf<16> Utf16;
    736 typedef Utf<32> Utf32;
    737 
    738 } // namespace sf
    739 
    740 
    741 #endif // SFML_UTF_HPP
    742 
    743 
    Utility class providing generic functions for UTF conversions.
    Definition: Utf.hpp:41
    +
    Specialization of the Utf template for UTF-16.
    Definition: Utf.hpp:255
    +
    Specialization of the Utf template for UTF-32.
    Definition: Utf.hpp:462
    + +
    Specialization of the Utf template for UTF-8.
    Definition: Utf.hpp:48
    +
    + + + + diff --git a/SFML/doc/html/Vector2_8hpp_source.html b/SFML/doc/html/Vector2_8hpp_source.html new file mode 100644 index 0000000..9b1b31a --- /dev/null +++ b/SFML/doc/html/Vector2_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Vector2.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VECTOR2_HPP
    26 #define SFML_VECTOR2_HPP
    27 
    28 
    29 namespace sf
    30 {
    36 template <typename T>
    37 class Vector2
    38 {
    39 public:
    40 
    47  Vector2();
    48 
    56  Vector2(T X, T Y);
    57 
    69  template <typename U>
    70  explicit Vector2(const Vector2<U>& vector);
    71 
    73  // Member data
    75  T x;
    76  T y;
    77 };
    78 
    88 template <typename T>
    89 Vector2<T> operator -(const Vector2<T>& right);
    90 
    104 template <typename T>
    105 Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right);
    106 
    120 template <typename T>
    121 Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right);
    122 
    133 template <typename T>
    134 Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right);
    135 
    146 template <typename T>
    147 Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right);
    148 
    159 template <typename T>
    160 Vector2<T> operator *(const Vector2<T>& left, T right);
    161 
    172 template <typename T>
    173 Vector2<T> operator *(T left, const Vector2<T>& right);
    174 
    188 template <typename T>
    189 Vector2<T>& operator *=(Vector2<T>& left, T right);
    190 
    201 template <typename T>
    202 Vector2<T> operator /(const Vector2<T>& left, T right);
    203 
    217 template <typename T>
    218 Vector2<T>& operator /=(Vector2<T>& left, T right);
    219 
    232 template <typename T>
    233 bool operator ==(const Vector2<T>& left, const Vector2<T>& right);
    234 
    247 template <typename T>
    248 bool operator !=(const Vector2<T>& left, const Vector2<T>& right);
    249 
    250 #include <SFML/System/Vector2.inl>
    251 
    252 // Define the most common types
    253 typedef Vector2<int> Vector2i;
    255 typedef Vector2<float> Vector2f;
    256 
    257 } // namespace sf
    258 
    259 
    260 #endif // SFML_VECTOR2_HPP
    261 
    262 
    T y
    Y coordinate of the vector.
    Definition: Vector2.hpp:76
    +
    Vector2()
    Default constructor.
    +
    T x
    X coordinate of the vector.
    Definition: Vector2.hpp:75
    + +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    + + + + diff --git a/SFML/doc/html/Vector3_8hpp_source.html b/SFML/doc/html/Vector3_8hpp_source.html new file mode 100644 index 0000000..6ec27f6 --- /dev/null +++ b/SFML/doc/html/Vector3_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Vector3.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VECTOR3_HPP
    26 #define SFML_VECTOR3_HPP
    27 
    28 
    29 namespace sf
    30 {
    36 template <typename T>
    37 class Vector3
    38 {
    39 public:
    40 
    47  Vector3();
    48 
    57  Vector3(T X, T Y, T Z);
    58 
    70  template <typename U>
    71  explicit Vector3(const Vector3<U>& vector);
    72 
    74  // Member data
    76  T x;
    77  T y;
    78  T z;
    79 };
    80 
    90 template <typename T>
    91 Vector3<T> operator -(const Vector3<T>& left);
    92 
    106 template <typename T>
    107 Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right);
    108 
    122 template <typename T>
    123 Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right);
    124 
    135 template <typename T>
    136 Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right);
    137 
    148 template <typename T>
    149 Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right);
    150 
    161 template <typename T>
    162 Vector3<T> operator *(const Vector3<T>& left, T right);
    163 
    174 template <typename T>
    175 Vector3<T> operator *(T left, const Vector3<T>& right);
    176 
    190 template <typename T>
    191 Vector3<T>& operator *=(Vector3<T>& left, T right);
    192 
    203 template <typename T>
    204 Vector3<T> operator /(const Vector3<T>& left, T right);
    205 
    219 template <typename T>
    220 Vector3<T>& operator /=(Vector3<T>& left, T right);
    221 
    234 template <typename T>
    235 bool operator ==(const Vector3<T>& left, const Vector3<T>& right);
    236 
    249 template <typename T>
    250 bool operator !=(const Vector3<T>& left, const Vector3<T>& right);
    251 
    252 #include <SFML/System/Vector3.inl>
    253 
    254 // Define the most common types
    255 typedef Vector3<int> Vector3i;
    256 typedef Vector3<float> Vector3f;
    257 
    258 } // namespace sf
    259 
    260 
    261 #endif // SFML_VECTOR3_HPP
    262 
    263 
    Utility template class for manipulating 3-dimensional vectors.
    Definition: Vector3.hpp:37
    +
    T z
    Z coordinate of the vector.
    Definition: Vector3.hpp:78
    +
    T x
    X coordinate of the vector.
    Definition: Vector3.hpp:76
    + +
    Vector3()
    Default constructor.
    +
    T y
    Y coordinate of the vector.
    Definition: Vector3.hpp:77
    +
    + + + + diff --git a/SFML/doc/html/VertexArray_8hpp_source.html b/SFML/doc/html/VertexArray_8hpp_source.html new file mode 100644 index 0000000..abd00d0 --- /dev/null +++ b/SFML/doc/html/VertexArray_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    VertexArray.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VERTEXARRAY_HPP
    26 #define SFML_VERTEXARRAY_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Vertex.hpp>
    33 #include <SFML/Graphics/PrimitiveType.hpp>
    34 #include <SFML/Graphics/Rect.hpp>
    35 #include <SFML/Graphics/Drawable.hpp>
    36 #include <vector>
    37 
    38 
    39 namespace sf
    40 {
    45 class SFML_GRAPHICS_API VertexArray : public Drawable
    46 {
    47 public:
    48 
    55  VertexArray();
    56 
    64  explicit VertexArray(PrimitiveType type, std::size_t vertexCount = 0);
    65 
    72  std::size_t getVertexCount() const;
    73 
    88  Vertex& operator [](std::size_t index);
    89 
    104  const Vertex& operator [](std::size_t index) const;
    105 
    115  void clear();
    116 
    129  void resize(std::size_t vertexCount);
    130 
    137  void append(const Vertex& vertex);
    138 
    153  void setPrimitiveType(PrimitiveType type);
    154 
    161  PrimitiveType getPrimitiveType() const;
    162 
    172  FloatRect getBounds() const;
    173 
    174 private:
    175 
    183  virtual void draw(RenderTarget& target, RenderStates states) const;
    184 
    185 private:
    186 
    188  // Member data
    190  std::vector<Vertex> m_vertices;
    191  PrimitiveType m_primitiveType;
    192 };
    193 
    194 } // namespace sf
    195 
    196 
    197 #endif // SFML_VERTEXARRAY_HPP
    198 
    199 
    PrimitiveType
    Types of primitives that a sf::VertexArray can render.
    +
    Define the states used for drawing to a RenderTarget.
    +
    Define a set of one or more 2D primitives.
    Definition: VertexArray.hpp:45
    +
    Define a point with color and texture coordinates.
    Definition: Vertex.hpp:42
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    + + +
    + + + + diff --git a/SFML/doc/html/VertexBuffer_8hpp_source.html b/SFML/doc/html/VertexBuffer_8hpp_source.html new file mode 100644 index 0000000..15e4325 --- /dev/null +++ b/SFML/doc/html/VertexBuffer_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    VertexBuffer.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VERTEXBUFFER_HPP
    26 #define SFML_VERTEXBUFFER_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/PrimitiveType.hpp>
    33 #include <SFML/Graphics/Drawable.hpp>
    34 #include <SFML/Window/GlResource.hpp>
    35 
    36 
    37 namespace sf
    38 {
    39 class RenderTarget;
    40 class Vertex;
    41 
    46 class SFML_GRAPHICS_API VertexBuffer : public Drawable, private GlResource
    47 {
    48 public:
    49 
    60  enum Usage
    61  {
    64  Static
    65  };
    66 
    73  VertexBuffer();
    74 
    83  explicit VertexBuffer(PrimitiveType type);
    84 
    93  explicit VertexBuffer(Usage usage);
    94 
    105  VertexBuffer(PrimitiveType type, Usage usage);
    106 
    113  VertexBuffer(const VertexBuffer& copy);
    114 
    119  ~VertexBuffer();
    120 
    137  bool create(std::size_t vertexCount);
    138 
    145  std::size_t getVertexCount() const;
    146 
    165  bool update(const Vertex* vertices);
    166 
    198  bool update(const Vertex* vertices, std::size_t vertexCount, unsigned int offset);
    199 
    208  bool update(const VertexBuffer& vertexBuffer);
    209 
    218  VertexBuffer& operator =(const VertexBuffer& right);
    219 
    226  void swap(VertexBuffer& right);
    227 
    238  unsigned int getNativeHandle() const;
    239 
    251  void setPrimitiveType(PrimitiveType type);
    252 
    259  PrimitiveType getPrimitiveType() const;
    260 
    276  void setUsage(Usage usage);
    277 
    284  Usage getUsage() const;
    285 
    307  static void bind(const VertexBuffer* vertexBuffer);
    308 
    319  static bool isAvailable();
    320 
    321 private:
    322 
    330  virtual void draw(RenderTarget& target, RenderStates states) const;
    331 
    332 private:
    333 
    335  // Member data
    337  unsigned int m_buffer;
    338  std::size_t m_size;
    339  PrimitiveType m_primitiveType;
    340  Usage m_usage;
    341 };
    342 
    343 } // namespace sf
    344 
    345 
    346 #endif // SFML_VERTEXBUFFER_HPP
    347 
    348 
    PrimitiveType
    Types of primitives that a sf::VertexArray can render.
    +
    Define the states used for drawing to a RenderTarget.
    +
    Vertex buffer storage for one or more 2D primitives.
    +
    Occasionally changing data.
    +
    Define a point with color and texture coordinates.
    Definition: Vertex.hpp:42
    +
    Base class for all render targets (window, texture, ...)
    +
    Abstract base class for objects that can be drawn to a render target.
    Definition: Drawable.hpp:44
    +
    Usage
    Usage specifiers.
    + +
    Constantly changing data.
    +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    + + + + diff --git a/SFML/doc/html/Vertex_8hpp_source.html b/SFML/doc/html/Vertex_8hpp_source.html new file mode 100644 index 0000000..9f657a4 --- /dev/null +++ b/SFML/doc/html/Vertex_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Vertex.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VERTEX_HPP
    26 #define SFML_VERTEX_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Color.hpp>
    33 #include <SFML/System/Vector2.hpp>
    34 
    35 
    36 namespace sf
    37 {
    42 class SFML_GRAPHICS_API Vertex
    43 {
    44 public:
    45 
    50  Vertex();
    51 
    60  Vertex(const Vector2f& thePosition);
    61 
    71  Vertex(const Vector2f& thePosition, const Color& theColor);
    72 
    82  Vertex(const Vector2f& thePosition, const Vector2f& theTexCoords);
    83 
    92  Vertex(const Vector2f& thePosition, const Color& theColor, const Vector2f& theTexCoords);
    93 
    95  // Member data
    100 };
    101 
    102 } // namespace sf
    103 
    104 
    105 #endif // SFML_VERTEX_HPP
    106 
    107 
    Vector2f position
    2D position of the vertex
    Definition: Vertex.hpp:97
    +
    Color color
    Color of the vertex.
    Definition: Vertex.hpp:98
    +
    Utility class for manipulating RGBA colors.
    Definition: Color.hpp:40
    +
    Vector2f texCoords
    Coordinates of the texture&#39;s pixel to map to the vertex.
    Definition: Vertex.hpp:99
    +
    Define a point with color and texture coordinates.
    Definition: Vertex.hpp:42
    + + +
    + + + + diff --git a/SFML/doc/html/VideoMode_8hpp_source.html b/SFML/doc/html/VideoMode_8hpp_source.html new file mode 100644 index 0000000..970fc89 --- /dev/null +++ b/SFML/doc/html/VideoMode_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    VideoMode.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VIDEOMODE_HPP
    26 #define SFML_VIDEOMODE_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/Export.hpp>
    32 #include <vector>
    33 
    34 
    35 namespace sf
    36 {
    41 class SFML_WINDOW_API VideoMode
    42 {
    43 public:
    44 
    51  VideoMode();
    52 
    61  VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel = 32);
    62 
    69  static VideoMode getDesktopMode();
    70 
    85  static const std::vector<VideoMode>& getFullscreenModes();
    86 
    97  bool isValid() const;
    98 
    100  // Member data
    102  unsigned int width;
    103  unsigned int height;
    104  unsigned int bitsPerPixel;
    105 };
    106 
    117 SFML_WINDOW_API bool operator ==(const VideoMode& left, const VideoMode& right);
    118 
    129 SFML_WINDOW_API bool operator !=(const VideoMode& left, const VideoMode& right);
    130 
    141 SFML_WINDOW_API bool operator <(const VideoMode& left, const VideoMode& right);
    142 
    153 SFML_WINDOW_API bool operator >(const VideoMode& left, const VideoMode& right);
    154 
    165 SFML_WINDOW_API bool operator <=(const VideoMode& left, const VideoMode& right);
    166 
    177 SFML_WINDOW_API bool operator >=(const VideoMode& left, const VideoMode& right);
    178 
    179 } // namespace sf
    180 
    181 
    182 #endif // SFML_VIDEOMODE_HPP
    183 
    184 
    unsigned int bitsPerPixel
    Video mode pixel depth, in bits per pixels.
    Definition: VideoMode.hpp:104
    +
    unsigned int width
    Video mode width, in pixels.
    Definition: VideoMode.hpp:102
    +
    VideoMode defines a video mode (width, height, bpp)
    Definition: VideoMode.hpp:41
    +
    unsigned int height
    Video mode height, in pixels.
    Definition: VideoMode.hpp:103
    + +
    + + + + diff --git a/SFML/doc/html/View_8hpp_source.html b/SFML/doc/html/View_8hpp_source.html new file mode 100644 index 0000000..aff2311 --- /dev/null +++ b/SFML/doc/html/View_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    View.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_VIEW_HPP
    26 #define SFML_VIEW_HPP
    27 
    29 // Headers
    31 #include <SFML/Graphics/Export.hpp>
    32 #include <SFML/Graphics/Rect.hpp>
    33 #include <SFML/Graphics/Transform.hpp>
    34 #include <SFML/System/Vector2.hpp>
    35 
    36 
    37 namespace sf
    38 {
    43 class SFML_GRAPHICS_API View
    44 {
    45 public:
    46 
    53  View();
    54 
    61  explicit View(const FloatRect& rectangle);
    62 
    70  View(const Vector2f& center, const Vector2f& size);
    71 
    81  void setCenter(float x, float y);
    82 
    91  void setCenter(const Vector2f& center);
    92 
    102  void setSize(float width, float height);
    103 
    112  void setSize(const Vector2f& size);
    113 
    124  void setRotation(float angle);
    125 
    141  void setViewport(const FloatRect& viewport);
    142 
    153  void reset(const FloatRect& rectangle);
    154 
    163  const Vector2f& getCenter() const;
    164 
    173  const Vector2f& getSize() const;
    174 
    183  float getRotation() const;
    184 
    193  const FloatRect& getViewport() const;
    194 
    204  void move(float offsetX, float offsetY);
    205 
    214  void move(const Vector2f& offset);
    215 
    224  void rotate(float angle);
    225 
    241  void zoom(float factor);
    242 
    253  const Transform& getTransform() const;
    254 
    265  const Transform& getInverseTransform() const;
    266 
    267 private:
    268 
    270  // Member data
    272  Vector2f m_center;
    273  Vector2f m_size;
    274  float m_rotation;
    275  FloatRect m_viewport;
    276  mutable Transform m_transform;
    277  mutable Transform m_inverseTransform;
    278  mutable bool m_transformUpdated;
    279  mutable bool m_invTransformUpdated;
    280 };
    281 
    282 } // namespace sf
    283 
    284 
    285 #endif // SFML_VIEW_HPP
    286 
    287 
    2D camera that defines what region is shown on screen
    Definition: View.hpp:43
    +
    Define a 3x3 transform matrix.
    Definition: Transform.hpp:42
    + + + +
    + + + + diff --git a/SFML/doc/html/WindowHandle_8hpp_source.html b/SFML/doc/html/WindowHandle_8hpp_source.html new file mode 100644 index 0000000..4416eac --- /dev/null +++ b/SFML/doc/html/WindowHandle_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    WindowHandle.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_WINDOWHANDLE_HPP
    26 #define SFML_WINDOWHANDLE_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 // Windows' HWND is a typedef on struct HWND__*
    34 #if defined(SFML_SYSTEM_WINDOWS)
    35  struct HWND__;
    36 #endif
    37 
    38 namespace sf
    39 {
    40 #if defined(SFML_SYSTEM_WINDOWS)
    41 
    42  // Window handle is HWND (HWND__*) on Windows
    43  typedef HWND__* WindowHandle;
    44 
    45 #elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) || defined(SFML_SYSTEM_OPENBSD)
    46 
    47  // Window handle is Window (unsigned long) on Unix - X11
    48  typedef unsigned long WindowHandle;
    49 
    50 #elif defined(SFML_SYSTEM_MACOS)
    51 
    52  // Window handle is NSWindow or NSView (void*) on Mac OS X - Cocoa
    53  typedef void* WindowHandle;
    54 
    55 #elif defined(SFML_SYSTEM_IOS)
    56 
    57  // Window handle is UIWindow (void*) on iOS - UIKit
    58  typedef void* WindowHandle;
    59 
    60 #elif defined(SFML_SYSTEM_ANDROID)
    61 
    62  // Window handle is ANativeWindow* (void*) on Android
    63  typedef void* WindowHandle;
    64 
    65 #elif defined(SFML_DOXYGEN)
    66 
    67  // Define typedef symbol so that Doxygen can attach some documentation to it
    68  typedef "platform-specific" WindowHandle;
    69 
    70 #endif
    71 
    72 } // namespace sf
    73 
    74 
    75 #endif // SFML_WINDOWHANDLE_HPP
    76 
    +
    platform specific WindowHandle
    Define a low-level window handle type, specific to each platform.
    +
    + + + + diff --git a/SFML/doc/html/WindowStyle_8hpp_source.html b/SFML/doc/html/WindowStyle_8hpp_source.html new file mode 100644 index 0000000..c71b0d2 --- /dev/null +++ b/SFML/doc/html/WindowStyle_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    WindowStyle.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_WINDOWSTYLE_HPP
    26 #define SFML_WINDOWSTYLE_HPP
    27 
    28 
    29 namespace sf
    30 {
    31 namespace Style
    32 {
    38  enum
    39  {
    40  None = 0,
    41  Titlebar = 1 << 0,
    42  Resize = 1 << 1,
    43  Close = 1 << 2,
    44  Fullscreen = 1 << 3,
    45 
    47  };
    48 }
    49 
    50 } // namespace sf
    51 
    52 
    53 #endif // SFML_WINDOWSTYLE_HPP
    No border / title bar (this flag and all others are mutually exclusive)
    Definition: WindowStyle.hpp:40
    +
    Default window style.
    Definition: WindowStyle.hpp:46
    +
    Title bar + fixed border.
    Definition: WindowStyle.hpp:41
    +
    Title bar + close button.
    Definition: WindowStyle.hpp:43
    +
    Fullscreen mode (this flag and all others are mutually exclusive)
    Definition: WindowStyle.hpp:44
    + +
    Title bar + resizable border + maximize button.
    Definition: WindowStyle.hpp:42
    +
    + + + + diff --git a/SFML/doc/html/Window_2Export_8hpp_source.html b/SFML/doc/html/Window_2Export_8hpp_source.html new file mode 100644 index 0000000..1ce8fe0 --- /dev/null +++ b/SFML/doc/html/Window_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Window/Export.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_WINDOW_EXPORT_HPP
    26 #define SFML_WINDOW_EXPORT_HPP
    27 
    29 // Headers
    31 #include <SFML/Config.hpp>
    32 
    33 
    35 // Define portable import / export macros
    37 #if defined(SFML_WINDOW_EXPORTS)
    38 
    39  #define SFML_WINDOW_API SFML_API_EXPORT
    40 
    41 #else
    42 
    43  #define SFML_WINDOW_API SFML_API_IMPORT
    44 
    45 #endif
    46 
    47 
    48 #endif // SFML_WINDOW_EXPORT_HPP
    + + + + diff --git a/SFML/doc/html/Window_2Window_8hpp_source.html b/SFML/doc/html/Window_2Window_8hpp_source.html new file mode 100644 index 0000000..433d774 --- /dev/null +++ b/SFML/doc/html/Window_2Window_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Window/Window.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_WINDOW_HPP
    26 #define SFML_WINDOW_HPP
    27 
    29 // Headers
    31 #include <SFML/Window/ContextSettings.hpp>
    32 #include <SFML/Window/Cursor.hpp>
    33 #include <SFML/Window/Export.hpp>
    34 #include <SFML/Window/GlResource.hpp>
    35 #include <SFML/Window/VideoMode.hpp>
    36 #include <SFML/Window/WindowHandle.hpp>
    37 #include <SFML/Window/WindowStyle.hpp>
    38 #include <SFML/System/Clock.hpp>
    39 #include <SFML/System/NonCopyable.hpp>
    40 #include <SFML/System/String.hpp>
    41 #include <SFML/System/Vector2.hpp>
    42 
    43 
    44 namespace sf
    45 {
    46 namespace priv
    47 {
    48  class GlContext;
    49  class WindowImpl;
    50 }
    51 
    52 class Event;
    53 
    58 class SFML_WINDOW_API Window : GlResource, NonCopyable
    59 {
    60 public:
    61 
    69  Window();
    70 
    90  Window(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
    91 
    106  explicit Window(WindowHandle handle, const ContextSettings& settings = ContextSettings());
    107 
    114  virtual ~Window();
    115 
    133  void create(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
    134 
    150  void create(WindowHandle handle, const ContextSettings& settings = ContextSettings());
    151 
    162  void close();
    163 
    174  bool isOpen() const;
    175 
    187  const ContextSettings& getSettings() const;
    188 
    212  bool pollEvent(Event& event);
    213 
    239  bool waitEvent(Event& event);
    240 
    249  Vector2i getPosition() const;
    250 
    263  void setPosition(const Vector2i& position);
    264 
    276  Vector2u getSize() const;
    277 
    286  void setSize(const Vector2u& size);
    287 
    296  void setTitle(const String& title);
    297 
    315  void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
    316 
    325  void setVisible(bool visible);
    326 
    340  void setVerticalSyncEnabled(bool enabled);
    341 
    350  void setMouseCursorVisible(bool visible);
    351 
    363  void setMouseCursorGrabbed(bool grabbed);
    364 
    382  void setMouseCursor(const Cursor& cursor);
    383 
    396  void setKeyRepeatEnabled(bool enabled);
    397 
    413  void setFramerateLimit(unsigned int limit);
    414 
    426  void setJoystickThreshold(float threshold);
    427 
    444  bool setActive(bool active = true) const;
    445 
    460  void requestFocus();
    461 
    473  bool hasFocus() const;
    474 
    483  void display();
    484 
    497  WindowHandle getSystemHandle() const;
    498 
    499 protected:
    500 
    509  virtual void onCreate();
    510 
    518  virtual void onResize();
    519 
    520 private:
    521 
    534  bool filterEvent(const Event& event);
    535 
    540  void initialize();
    541 
    543  // Member data
    545  priv::WindowImpl* m_impl;
    546  priv::GlContext* m_context;
    547  Clock m_clock;
    548  Time m_frameTimeLimit;
    549  Vector2u m_size;
    550 };
    551 
    552 } // namespace sf
    553 
    554 
    555 #endif // SFML_WINDOW_HPP
    556 
    557 
    Default window style.
    Definition: WindowStyle.hpp:46
    +
    Window that serves as a target for OpenGL rendering.
    +
    Represents a time value.
    Definition: Time.hpp:40
    +
    Cursor defines the appearance of a system cursor.
    Definition: Cursor.hpp:46
    +
    Defines a system event and its parameters.
    Definition: Event.hpp:44
    +
    Utility class that makes any derived class non-copyable.
    Definition: NonCopyable.hpp:41
    +
    Structure defining the settings of the OpenGL context attached to a window.
    +
    VideoMode defines a video mode (width, height, bpp)
    Definition: VideoMode.hpp:41
    + +
    Utility template class for manipulating 2-dimensional vectors.
    Definition: Vector2.hpp:37
    +
    Base class for classes that require an OpenGL context.
    Definition: GlResource.hpp:46
    +
    Utility string class that automatically handles conversions between types and encodings.
    Definition: String.hpp:45
    +
    platform specific WindowHandle
    Define a low-level window handle type, specific to each platform.
    +
    Utility class that measures the elapsed time.
    Definition: Clock.hpp:41
    +
    + + + + diff --git a/SFML/doc/html/Window_8hpp_source.html b/SFML/doc/html/Window_8hpp_source.html new file mode 100644 index 0000000..8a5c209 --- /dev/null +++ b/SFML/doc/html/Window_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Window.hpp
    +
    +
    +
    1 //
    3 // SFML - Simple and Fast Multimedia Library
    4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
    5 //
    6 // This software is provided 'as-is', without any express or implied warranty.
    7 // In no event will the authors be held liable for any damages arising from the use of this software.
    8 //
    9 // Permission is granted to anyone to use this software for any purpose,
    10 // including commercial applications, and to alter it and redistribute it freely,
    11 // subject to the following restrictions:
    12 //
    13 // 1. The origin of this software must not be misrepresented;
    14 // you must not claim that you wrote the original software.
    15 // If you use this software in a product, an acknowledgment
    16 // in the product documentation would be appreciated but is not required.
    17 //
    18 // 2. Altered source versions must be plainly marked as such,
    19 // and must not be misrepresented as being the original software.
    20 //
    21 // 3. This notice may not be removed or altered from any source distribution.
    22 //
    24 
    25 #ifndef SFML_SFML_WINDOW_HPP
    26 #define SFML_SFML_WINDOW_HPP
    27 
    29 // Headers
    31 
    32 #include <SFML/System.hpp>
    33 #include <SFML/Window/Clipboard.hpp>
    34 #include <SFML/Window/Context.hpp>
    35 #include <SFML/Window/ContextSettings.hpp>
    36 #include <SFML/Window/Cursor.hpp>
    37 #include <SFML/Window/Event.hpp>
    38 #include <SFML/Window/Joystick.hpp>
    39 #include <SFML/Window/Keyboard.hpp>
    40 #include <SFML/Window/Mouse.hpp>
    41 #include <SFML/Window/Sensor.hpp>
    42 #include <SFML/Window/Touch.hpp>
    43 #include <SFML/Window/VideoMode.hpp>
    44 #include <SFML/Window/Window.hpp>
    45 #include <SFML/Window/WindowHandle.hpp>
    46 #include <SFML/Window/WindowStyle.hpp>
    47 
    48 
    49 
    50 #endif // SFML_SFML_WINDOW_HPP
    51 
    + + + + diff --git a/SFML/doc/html/annotated.html b/SFML/doc/html/annotated.html new file mode 100644 index 0000000..4f2e1ee --- /dev/null +++ b/SFML/doc/html/annotated.html @@ -0,0 +1,162 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Class List
    +
    +
    +
    Here are the classes, structs, unions and interfaces with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Nsf
     CAlResourceBase class for classes that require an OpenAL context
     CBlendModeBlending modes for drawing
     CCircleShapeSpecialized shape representing a circle
     CClipboardGive access to the system clipboard
     CClockUtility class that measures the elapsed time
     CColorUtility class for manipulating RGBA colors
     CContextClass holding a valid drawing context
     CContextSettingsStructure defining the settings of the OpenGL context attached to a window
     CConvexShapeSpecialized shape representing a convex polygon
     CCursorCursor defines the appearance of a system cursor
     CDrawableAbstract base class for objects that can be drawn to a render target
     CEventDefines a system event and its parameters
     CFileInputStreamImplementation of input stream based on a file
     CFontClass for loading and manipulating character fonts
     CFtpA FTP client
     CGlResourceBase class for classes that require an OpenGL context
     CGlyphStructure describing a glyph
     CHttpA HTTP client
     CImageClass for loading, manipulating and saving images
     CInputSoundFileProvide read access to sound files
     CInputStreamAbstract class for custom file input streams
     CIpAddressEncapsulate an IPv4 network address
     CJoystickGive access to the real-time state of the joysticks
     CKeyboardGive access to the real-time state of the keyboard
     CListenerThe audio listener is the point in the scene from where all the sounds are heard
     CLockAutomatic wrapper for locking and unlocking mutexes
     CMemoryInputStreamImplementation of input stream based on a memory chunk
     CMouseGive access to the real-time state of the mouse
     CMusicStreamed music played from an audio file
     CMutexBlocks concurrent access to shared resources from multiple threads
     CNonCopyableUtility class that makes any derived class non-copyable
     COutputSoundFileProvide write access to sound files
     CPacketUtility class to build blocks of data to transfer over the network
     CRectUtility class for manipulating 2D axis aligned rectangles
     CRectangleShapeSpecialized shape representing a rectangle
     CRenderStatesDefine the states used for drawing to a RenderTarget
     CRenderTargetBase class for all render targets (window, texture, ...)
     CRenderTextureTarget for off-screen 2D rendering into a texture
     CRenderWindowWindow that can serve as a target for 2D drawing
     CSensorGive access to the real-time state of the sensors
     CShaderShader class (vertex, geometry and fragment)
     CShapeBase class for textured shapes with outline
     CSocketBase class for all the socket types
     CSocketSelectorMultiplexer that allows to read from multiple sockets
     CSoundRegular sound that can be played in the audio environment
     CSoundBufferStorage for audio samples defining a sound
     CSoundBufferRecorderSpecialized SoundRecorder which stores the captured audio data into a sound buffer
     CSoundFileFactoryManages and instantiates sound file readers and writers
     CSoundFileReaderAbstract base class for sound file decoding
     CSoundFileWriterAbstract base class for sound file encoding
     CSoundRecorderAbstract base class for capturing sound data
     CSoundSourceBase class defining a sound's properties
     CSoundStreamAbstract base class for streamed audio sources
     CSpriteDrawable representation of a texture, with its own transformations, color, etc
     CStringUtility string class that automatically handles conversions between types and encodings
     CTcpListenerSocket that listens to new TCP connections
     CTcpSocketSpecialized socket using the TCP protocol
     CTextGraphical text that can be drawn to a render target
     CTextureImage living on the graphics card that can be used for drawing
     CThreadUtility class to manipulate threads
     CThreadLocalDefines variables with thread-local storage
     CThreadLocalPtrPointer to a thread-local variable
     CTimeRepresents a time value
     CTouchGive access to the real-time state of the touches
     CTransformDefine a 3x3 transform matrix
     CTransformableDecomposed transform defined by a position, a rotation and a scale
     CUdpSocketSpecialized socket using the UDP protocol
     CUtfUtility class providing generic functions for UTF conversions
     CUtf< 16 >Specialization of the Utf template for UTF-16
     CUtf< 32 >Specialization of the Utf template for UTF-32
     CUtf< 8 >Specialization of the Utf template for UTF-8
     CVector2Utility template class for manipulating 2-dimensional vectors
     CVector3Utility template class for manipulating 3-dimensional vectors
     CVertexDefine a point with color and texture coordinates
     CVertexArrayDefine a set of one or more 2D primitives
     CVertexBufferVertex buffer storage for one or more 2D primitives
     CVideoModeVideoMode defines a video mode (width, height, bpp)
     CView2D camera that defines what region is shown on screen
     CWindowWindow that serves as a target for OpenGL rendering
    +
    +
    + + + + diff --git a/SFML/doc/html/bc_s.png b/SFML/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/SFML/doc/html/bdwn.png b/SFML/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Class Index
    +
    +
    +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | r | s | t | u | v | w
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      a  
    +
    Event::JoystickButtonEvent (sf)   Socket (sf)   
    Event::JoystickConnectEvent (sf)   SocketSelector (sf)   
    AlResource (sf)   Event::JoystickMoveEvent (sf)   Sound (sf)   
      b  
    +
      k  
    +
    SoundBuffer (sf)   
    SoundBufferRecorder (sf)   
    BlendMode (sf)   Keyboard (sf)   SoundFileFactory (sf)   
      c  
    +
    Event::KeyEvent (sf)   SoundFileReader (sf)   
      l  
    +
    SoundFileWriter (sf)   
    SoundStream::Chunk (sf)   SoundRecorder (sf)   
    CircleShape (sf)   Listener (sf)   SoundSource (sf)   
    Clipboard (sf)   Ftp::ListingResponse (sf)   SoundStream (sf)   
    Clock (sf)   Lock (sf)   Music::Span (sf)   
    Color (sf)   
      m  
    +
    Sprite (sf)   
    Context (sf)   String (sf)   
    ContextSettings (sf)   MemoryInputStream (sf)   
      t  
    +
    ConvexShape (sf)   Mouse (sf)   
    Shader::CurrentTextureType (sf)   Event::MouseButtonEvent (sf)   TcpListener (sf)   
    Cursor (sf)   Event::MouseMoveEvent (sf)   TcpSocket (sf)   
      d  
    +
    Event::MouseWheelEvent (sf)   Text (sf)   
    Event::MouseWheelScrollEvent (sf)   Event::TextEvent (sf)   
    Ftp::DirectoryResponse (sf)   Music (sf)   Texture (sf)   
    Drawable (sf)   Mutex (sf)   Thread (sf)   
      e  
    +
      n  
    +
    ThreadLocal (sf)   
    ThreadLocalPtr (sf)   
    Event (sf)   NonCopyable (sf)   Time (sf)   
      f  
    +
      o  
    +
    Touch (sf)   
    Event::TouchEvent (sf)   
    FileInputStream (sf)   OutputSoundFile (sf)   Transform (sf)   
    Font (sf)   
      p  
    +
    Transformable (sf)   
    Ftp (sf)   GlResource::TransientContextLock (sf)   
      g  
    +
    Packet (sf)   
      u  
    +
      r  
    +
    GlResource (sf)   UdpSocket (sf)   
    Glyph (sf)   Rect (sf)   Utf (sf)   
      h  
    +
    RectangleShape (sf)   Utf< 16 > (sf)   
    RenderStates (sf)   Utf< 32 > (sf)   
    Http (sf)   RenderTarget (sf)   Utf< 8 > (sf)   
      i  
    +
    RenderTexture (sf)   
      v  
    +
    RenderWindow (sf)   
    Joystick::Identification (sf)   Http::Request (sf)   Vector2 (sf)   
    Image (sf)   Ftp::Response (sf)   Vector3 (sf)   
    SoundFileReader::Info (sf)   Http::Response (sf)   Vertex (sf)   
    Font::Info (sf)   
      s  
    +
    VertexArray (sf)   
    InputSoundFile (sf)   VertexBuffer (sf)   
    InputStream (sf)   Sensor (sf)   VideoMode (sf)   
    IpAddress (sf)   Event::SensorEvent (sf)   View (sf)   
      j  
    +
    Shader (sf)   
      w  
    +
    Shape (sf)   
    Joystick (sf)   Event::SizeEvent (sf)   Window (sf)   
    +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | r | s | t | u | v | w
    +
    + + + + diff --git a/SFML/doc/html/classsf_1_1AlResource-members.html b/SFML/doc/html/classsf_1_1AlResource-members.html new file mode 100644 index 0000000..7afed0a --- /dev/null +++ b/SFML/doc/html/classsf_1_1AlResource-members.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::AlResource Member List
    +
    +
    + +

    This is the complete list of members for sf::AlResource, including all inherited members.

    + + + +
    AlResource()sf::AlResourceprotected
    ~AlResource()sf::AlResourceprotected
    + + + + diff --git a/SFML/doc/html/classsf_1_1AlResource.html b/SFML/doc/html/classsf_1_1AlResource.html new file mode 100644 index 0000000..d781ece --- /dev/null +++ b/SFML/doc/html/classsf_1_1AlResource.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::AlResource Class Reference
    +
    +
    + +

    Base class for classes that require an OpenAL context. + More...

    + +

    #include <AlResource.hpp>

    +
    +Inheritance diagram for sf::AlResource:
    +
    +
    + + +sf::SoundBuffer +sf::SoundRecorder +sf::SoundSource +sf::SoundBufferRecorder +sf::Sound +sf::SoundStream +sf::Music + +
    + + + + + + + + +

    +Protected Member Functions

     AlResource ()
     Default constructor. More...
     
     ~AlResource ()
     Destructor. More...
     
    +

    Detailed Description

    +

    Base class for classes that require an OpenAL context.

    +

    This class is for internal use only, it must be the base of every class that requires a valid OpenAL context in order to work.

    + +

    Definition at line 40 of file AlResource.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ AlResource()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::AlResource::AlResource ()
    +
    +protected
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~AlResource()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::AlResource::~AlResource ()
    +
    +protected
    +
    + +

    Destructor.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1AlResource.png b/SFML/doc/html/classsf_1_1AlResource.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccd5539fd45fdfa0dabfc9de534afb14cbe00f4 GIT binary patch literal 2327 zcmcImeN>az8K-3!4=S0bjNpJ|juf#0tz7^L6X3myt}by+i_dF(?534dGB+- zp6A~CKF{y@-7B#%5u2QU?d;&-u!**R-(d%bS0T`DU+)O&hC@~Mj(cp>k#H16L33{5 z`GvBMPeAL%*WTXlbY+47y6ev$j)`*si|l2%_sE-IsFt=b>`4AATBY{rc$CAXM=~1M z#Olc|2wzWlgZS)LerxLvLNWg&KGoLotu{}rbPJQlDdzSBQ}ZDi)_L7&DE4>1Hx^%f zrIO&fQQy8tmwJLuuvr-*)RA6qks8G;{;W4cIIv1iM6mtxfNF?kPOCpfwK_q28{PdsiECjm5JgNOki28jO=;0M*yM+7c#p zcd@6ui2}0Ei5cd zsvA^dot>Q__97G;8>y(TVg_H z6oU$k_$aN(C+vo#!C=ZmZnq_&F{q;zc60jZ)-~z3K=0zk>>(vKC{@9wM9c4nqeC0j zk+iA^dRdi0~fJnn7D&z>~q(>#;t6?BN&|uC4!o=g%7U?@Of12BA==S&D z9BWnZ@qGNYo-g3+MRs5Jf`EzC5Yt$?f$ZTf&h&U9*{e#m7iW7~LA3O>ATe<$`Y7Vq z*YuhBGD^OdF)PYQp`GibeyU<5N(7RpatnCGp1z?QPZ z1ggu0hWK4gPonx+ZCRhBIZpDQwIkP(%)=F;9aX9ii3Q!4k)&Cut@cSRl{NEjgr=-9 zG|*%j(U&5UtQ2E`Y#l@y&awF2*DFqFxbJmu4)lc|Ug5KPvaF-%{hTHfq02O5`qgWZ zUyD~PN7x#Z{*nq$hP$q67?mr-IDID}n8B4l-qwRze4B}j$_y&U8rIJLwHT|y_#-P7 zcMz9jH;6iSj*2PB=V?2Teu;!;Xar||t7+cf_FU2;LnL|O{km{YTiT#{t>=M6>peTr zs6tjd8M3ZP`o|BqZ|k{N!`9&v%*am3girbOM@?*$vwV6MIBx8t|8(F{ zV9au<4J1#GVfZ|AC`SmR}MmK`zet=h$fs?|UTqQxfSb`TtKC9~yYI>8o$} z%LAh6x5zhY)8D}aWgXyXulr|#_@@T$9lb@$;_Mtmk{fPoBt0V9%w+Es6^z`Q)dOoPf2qdAnvkG7D+BKUQ9 zq+x#9iC+|VFkS0HSHo!1#OKx!VJVzS)#TTyl0wj>R(92<-N?WWWBj{;G{a>~YRmE@ z{*Rtn@`ZjGo7i&}jfI5V+_u-cZ>HFK)uH`_#G;HvFU3NUsbm6KFuh$) zw6w!{=A@)Su~L@OdasWEdN4~{jHD7)Kkqb2U)(w0Ou8;>;H~Bn1Uuo94XgU^5F$J# ztiZmtW}6(hY6`o05w`^Uy=%5Kej~y$7M~i#ZPoMf%gu#+su&`Rr~B46Kob^;T3=+& z;7o7EdP&YKYG*{t_pvHb2~)XXqGGcJUQR|w<73&Ah*ZYv@)=TuXDD-J2!{t?0Jc+l z08BDV+1dxuR#cltVV0jHA0+@#HrT%0(&2LTZRKQjL$SG)v+|4t`Aa|xsJpK<*Q=c@6)*z@?51sv;T zrfUB)k|!2naMUtK&Ph83W*0zpEiPX8+$hdxl>`bLZqe>l@H2QbBGxi2FAhHx1jsYe zP$*mYEwFoZNS3d})N-PP)+|%$8wQFxKtt`*v3E=nSSw;{G?= f)}~iB℞VqxGk+k(~Nr literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1CircleShape-members.html b/SFML/doc/html/classsf_1_1CircleShape-members.html new file mode 100644 index 0000000..f129e75 --- /dev/null +++ b/SFML/doc/html/classsf_1_1CircleShape-members.html @@ -0,0 +1,103 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::CircleShape Member List
    +
    +
    + +

    This is the complete list of members for sf::CircleShape, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CircleShape(float radius=0, std::size_t pointCount=30)sf::CircleShapeexplicit
    getFillColor() constsf::Shape
    getGlobalBounds() constsf::Shape
    getInverseTransform() constsf::Transformable
    getLocalBounds() constsf::Shape
    getOrigin() constsf::Transformable
    getOutlineColor() constsf::Shape
    getOutlineThickness() constsf::Shape
    getPoint(std::size_t index) constsf::CircleShapevirtual
    getPointCount() constsf::CircleShapevirtual
    getPosition() constsf::Transformable
    getRadius() constsf::CircleShape
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getTexture() constsf::Shape
    getTextureRect() constsf::Shape
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setFillColor(const Color &color)sf::Shape
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setOutlineColor(const Color &color)sf::Shape
    setOutlineThickness(float thickness)sf::Shape
    setPointCount(std::size_t count)sf::CircleShape
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRadius(float radius)sf::CircleShape
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setTexture(const Texture *texture, bool resetRect=false)sf::Shape
    setTextureRect(const IntRect &rect)sf::Shape
    Shape()sf::Shapeprotected
    Transformable()sf::Transformable
    update()sf::Shapeprotected
    ~Drawable()sf::Drawableinlinevirtual
    ~Shape()sf::Shapevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1CircleShape.html b/SFML/doc/html/classsf_1_1CircleShape.html new file mode 100644 index 0000000..f4b8994 --- /dev/null +++ b/SFML/doc/html/classsf_1_1CircleShape.html @@ -0,0 +1,1478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized shape representing a circle. + More...

    + +

    #include <CircleShape.hpp>

    +
    +Inheritance diagram for sf::CircleShape:
    +
    +
    + + +sf::Shape +sf::Drawable +sf::Transformable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     CircleShape (float radius=0, std::size_t pointCount=30)
     Default constructor. More...
     
    void setRadius (float radius)
     Set the radius of the circle. More...
     
    float getRadius () const
     Get the radius of the circle. More...
     
    void setPointCount (std::size_t count)
     Set the number of points of the circle. More...
     
    virtual std::size_t getPointCount () const
     Get the number of points of the circle. More...
     
    virtual Vector2f getPoint (std::size_t index) const
     Get a point of the circle. More...
     
    void setTexture (const Texture *texture, bool resetRect=false)
     Change the source texture of the shape. More...
     
    void setTextureRect (const IntRect &rect)
     Set the sub-rectangle of the texture that the shape will display. More...
     
    void setFillColor (const Color &color)
     Set the fill color of the shape. More...
     
    void setOutlineColor (const Color &color)
     Set the outline color of the shape. More...
     
    void setOutlineThickness (float thickness)
     Set the thickness of the shape's outline. More...
     
    const TexturegetTexture () const
     Get the source texture of the shape. More...
     
    const IntRectgetTextureRect () const
     Get the sub-rectangle of the texture displayed by the shape. More...
     
    const ColorgetFillColor () const
     Get the fill color of the shape. More...
     
    const ColorgetOutlineColor () const
     Get the outline color of the shape. More...
     
    float getOutlineThickness () const
     Get the outline thickness of the shape. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global (non-minimal) bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    + + + + +

    +Protected Member Functions

    void update ()
     Recompute the internal geometry of the shape. More...
     
    +

    Detailed Description

    +

    Specialized shape representing a circle.

    +

    This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

    +

    Usage example:

    circle.setRadius(150);
    circle.setPosition(10, 20);
    ...
    window.draw(circle);

    Since the graphics card can't draw perfect circles, we have to fake them with multiple triangles connected to each other. The "points count" property of sf::CircleShape defines how many of these triangles to use, and therefore defines the quality of the circle.

    +

    The number of points can also be used for another purpose; with small numbers you can create any regular polygon shape: equilateral triangle, square, pentagon, hexagon, ...

    +
    See also
    sf::Shape, sf::RectangleShape, sf::ConvexShape
    + +

    Definition at line 41 of file CircleShape.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ CircleShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    sf::CircleShape::CircleShape (float radius = 0,
    std::size_t pointCount = 30 
    )
    +
    +explicit
    +
    + +

    Default constructor.

    +
    Parameters
    + + + +
    radiusRadius of the circle
    pointCountNumber of points composing the circle
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getFillColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getFillColor () const
    +
    +inherited
    +
    + +

    Get the fill color of the shape.

    +
    Returns
    Fill color of the shape
    +
    See also
    setFillColor
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getGlobalBounds () const
    +
    +inherited
    +
    + +

    Get the global (non-minimal) bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

    +

    This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getLocalBounds () const
    +
    +inherited
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getOutlineColor () const
    +
    +inherited
    +
    + +

    Get the outline color of the shape.

    +
    Returns
    Outline color of the shape
    +
    See also
    setOutlineColor
    + +
    +
    + +

    ◆ getOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Shape::getOutlineThickness () const
    +
    +inherited
    +
    + +

    Get the outline thickness of the shape.

    +
    Returns
    Outline thickness of the shape
    +
    See also
    setOutlineThickness
    + +
    +
    + +

    ◆ getPoint()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Vector2f sf::CircleShape::getPoint (std::size_t index) const
    +
    +virtual
    +
    + +

    Get a point of the circle.

    +

    The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

    +
    Parameters
    + + +
    indexIndex of the point to get, in range [0 .. getPointCount() - 1]
    +
    +
    +
    Returns
    index-th point of the shape
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPointCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::size_t sf::CircleShape::getPointCount () const
    +
    +virtual
    +
    + +

    Get the number of points of the circle.

    +
    Returns
    Number of points of the circle
    +
    See also
    setPointCount
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRadius()

    + +
    +
    + + + + + + + +
    float sf::CircleShape::getRadius () const
    +
    + +

    Get the radius of the circle.

    +
    Returns
    Radius of the circle
    +
    See also
    setRadius
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Texture* sf::Shape::getTexture () const
    +
    +inherited
    +
    + +

    Get the source texture of the shape.

    +

    If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

    +
    Returns
    Pointer to the shape's texture
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ getTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + +
    const IntRect& sf::Shape::getTextureRect () const
    +
    +inherited
    +
    + +

    Get the sub-rectangle of the texture displayed by the shape.

    +
    Returns
    Texture rectangle of the shape
    +
    See also
    setTextureRect
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setFillColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setFillColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the fill color of the shape.

    +

    This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

    +
    Parameters
    + + +
    colorNew color of the shape
    +
    +
    +
    See also
    getFillColor, setOutlineColor
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the outline color of the shape.

    +

    By default, the shape's outline color is opaque white.

    +
    Parameters
    + + +
    colorNew outline color of the shape
    +
    +
    +
    See also
    getOutlineColor, setFillColor
    + +
    +
    + +

    ◆ setOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineThickness (float thickness)
    +
    +inherited
    +
    + +

    Set the thickness of the shape's outline.

    +

    Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

    +
    Parameters
    + + +
    thicknessNew outline thickness
    +
    +
    +
    See also
    getOutlineThickness
    + +
    +
    + +

    ◆ setPointCount()

    + +
    +
    + + + + + + + + +
    void sf::CircleShape::setPointCount (std::size_t count)
    +
    + +

    Set the number of points of the circle.

    +
    Parameters
    + + +
    countNew number of points of the circle
    +
    +
    +
    See also
    getPointCount
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRadius()

    + +
    +
    + + + + + + + + +
    void sf::CircleShape::setRadius (float radius)
    +
    + +

    Set the radius of the circle.

    +
    Parameters
    + + +
    radiusNew radius of the circle
    +
    +
    +
    See also
    getRadius
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setTexture()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shape::setTexture (const Texturetexture,
    bool resetRect = false 
    )
    +
    +inherited
    +
    + +

    Change the source texture of the shape.

    +

    The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

    +
    Parameters
    + + + +
    textureNew texture
    resetRectShould the texture rect be reset to the size of the new texture?
    +
    +
    +
    See also
    getTexture, setTextureRect
    + +
    +
    + +

    ◆ setTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setTextureRect (const IntRectrect)
    +
    +inherited
    +
    + +

    Set the sub-rectangle of the texture that the shape will display.

    +

    The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

    +
    Parameters
    + + +
    rectRectangle defining the region of the texture to display
    +
    +
    +
    See also
    getTextureRect, setTexture
    + +
    +
    + +

    ◆ update()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Shape::update ()
    +
    +protectedinherited
    +
    + +

    Recompute the internal geometry of the shape.

    +

    This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1CircleShape.png b/SFML/doc/html/classsf_1_1CircleShape.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c65ef4e7287794b35eb15264a69604d32af5f5 GIT binary patch literal 1009 zcmeAS@N?(olHy`uVBq!ia0vp^Pk^|CgBeI3*uQ-qkdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~Zt!$*45?szJNNCjO$q{T=KR@}|EK?1 zHlwEH)@?!KImNeBoeq?>z0|)~T`#3m4fKtK_gyI)gJM?CF_*OLmp|T8SS++Acafgtz8@hcRHpw9EDF@!r{QV2 ze$rE~(@`g5)t9dKcp(%2_27BmHD3FcWpDeQvu?*xf0flQXRQymc`@g&Z_bj}yHZy0 zo{Y)-*S2KU^VeRx)_JCVR;!GddgsQGtcRWFpSu>#)UXtq`exdarmTmW`#x+6tKmxB zHBEBsw$8oAkzwKLnXUHoPTHP4HFJ&UzIwIIS57$X7ui%Y>%zZ1yRLEhTjft&w{e%) z%U#<#*WUN^w3@aRNM?0-dR z2jV|w_A=D~g}*dl$1&VMn|K@YAE>@m@ex`es;245o-~PJZH4=#ofW3B`njG}^R>O* zmcD%T@!Iq!659p#_*_4Gu=bc~uIDAL>r;3fXA777;*gqL{pLi}q%DV1RZq{=PcPaR zZNuUj_4LrosCPCWIZHD*U&QT;+x8(PRZZ9CD!*sc^H=Fb!JoFDPbp(cu3Prf>e{vY z>())$a{l)IS!$d>A5B@pZ0Ok#1`HJ04xpC~RloOVeo!vKQ1zT|(%}N;)7Bn#GQYR) zXgtmDuBn&G-}&AO)z8%_VlZ{NivbMV$2a6qtF2mqtD6&SVPaIk#t$NV7p aA7jWl*G&c + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Clipboard Member List
    +
    +
    + +

    This is the complete list of members for sf::Clipboard, including all inherited members.

    + + + +
    getString()sf::Clipboardstatic
    setString(const String &text)sf::Clipboardstatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1Clipboard.html b/SFML/doc/html/classsf_1_1Clipboard.html new file mode 100644 index 0000000..116b884 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Clipboard.html @@ -0,0 +1,152 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Clipboard Class Reference
    +
    +
    + +

    Give access to the system clipboard. + More...

    + +

    #include <Clipboard.hpp>

    + + + + + + + + +

    +Static Public Member Functions

    static String getString ()
     Get the content of the clipboard as string data. More...
     
    static void setString (const String &text)
     Set the content of the clipboard as string data. More...
     
    +

    Detailed Description

    +

    Give access to the system clipboard.

    +

    sf::Clipboard provides an interface for getting and setting the contents of the system clipboard.

    +

    It is important to note that due to limitations on some operating systems, setting the clipboard contents is only guaranteed to work if there is currently an open window for which events are being handled.

    +

    Usage example:

    // get the clipboard content as a string
    // or use it in the event loop
    sf::Event event;
    while(window.pollEvent(event))
    {
    if(event.type == sf::Event::Closed)
    window.close();
    {
    // Using Ctrl + V to paste a string into SFML
    if(event.key.control && event.key.code == sf::Keyboard::V)
    // Using Ctrl + C to copy a string out of SFML
    if(event.key.control && event.key.code == sf::Keyboard::C)
    sf::Clipboard::setString("Hello World!");
    }
    }
    See also
    sf::String, sf::Event
    + +

    Definition at line 41 of file Clipboard.hpp.

    +

    Member Function Documentation

    + +

    ◆ getString()

    + +
    +
    + + + + + +
    + + + + + + + +
    static String sf::Clipboard::getString ()
    +
    +static
    +
    + +

    Get the content of the clipboard as string data.

    +

    This function returns the content of the clipboard as a string. If the clipboard does not contain string it returns an empty sf::String object.

    +
    Returns
    Clipboard contents as sf::String object
    + +
    +
    + +

    ◆ setString()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Clipboard::setString (const Stringtext)
    +
    +static
    +
    + +

    Set the content of the clipboard as string data.

    +

    This function sets the content of the clipboard as a string.

    +
    Warning
    Due to limitations on some operating systems, setting the clipboard contents is only guaranteed to work if there is currently an open window for which events are being handled.
    +
    Parameters
    + + +
    textsf::String containing the data to be sent to the clipboard
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Clock-members.html b/SFML/doc/html/classsf_1_1Clock-members.html new file mode 100644 index 0000000..e1e1a77 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Clock-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Clock Member List
    +
    +
    + +

    This is the complete list of members for sf::Clock, including all inherited members.

    + + + + +
    Clock()sf::Clock
    getElapsedTime() constsf::Clock
    restart()sf::Clock
    + + + + diff --git a/SFML/doc/html/classsf_1_1Clock.html b/SFML/doc/html/classsf_1_1Clock.html new file mode 100644 index 0000000..ec4bada --- /dev/null +++ b/SFML/doc/html/classsf_1_1Clock.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Clock Class Reference
    +
    +
    + +

    Utility class that measures the elapsed time. + More...

    + +

    #include <Clock.hpp>

    + + + + + + + + + + + +

    +Public Member Functions

     Clock ()
     Default constructor. More...
     
    Time getElapsedTime () const
     Get the elapsed time. More...
     
    Time restart ()
     Restart the clock. More...
     
    +

    Detailed Description

    +

    Utility class that measures the elapsed time.

    +

    sf::Clock is a lightweight class for measuring time.

    +

    Its provides the most precise time that the underlying OS can achieve (generally microseconds or nanoseconds). It also ensures monotonicity, which means that the returned time can never go backward, even if the system time is changed.

    +

    Usage example:

    sf::Clock clock;
    ...
    Time time1 = clock.getElapsedTime();
    ...
    Time time2 = clock.restart();

    The sf::Time value returned by the clock can then be converted to a number of seconds, milliseconds or even microseconds.

    +
    See also
    sf::Time
    + +

    Definition at line 41 of file Clock.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Clock()

    + +
    +
    + + + + + + + +
    sf::Clock::Clock ()
    +
    + +

    Default constructor.

    +

    The clock starts automatically after being constructed.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getElapsedTime()

    + +
    +
    + + + + + + + +
    Time sf::Clock::getElapsedTime () const
    +
    + +

    Get the elapsed time.

    +

    This function returns the time elapsed since the last call to restart() (or the construction of the instance if restart() has not been called).

    +
    Returns
    Time elapsed
    + +
    +
    + +

    ◆ restart()

    + +
    +
    + + + + + + + +
    Time sf::Clock::restart ()
    +
    + +

    Restart the clock.

    +

    This function puts the time counter back to zero. It also returns the time elapsed since the clock was started.

    +
    Returns
    Time elapsed
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Color-members.html b/SFML/doc/html/classsf_1_1Color-members.html new file mode 100644 index 0000000..e5939b3 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Color-members.html @@ -0,0 +1,86 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Color Member List
    +
    +
    + +

    This is the complete list of members for sf::Color, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    asf::Color
    bsf::Color
    Blacksf::Colorstatic
    Bluesf::Colorstatic
    Color()sf::Color
    Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha=255)sf::Color
    Color(Uint32 color)sf::Colorexplicit
    Cyansf::Colorstatic
    gsf::Color
    Greensf::Colorstatic
    Magentasf::Colorstatic
    operator!=(const Color &left, const Color &right)sf::Colorrelated
    operator*(const Color &left, const Color &right)sf::Colorrelated
    operator*=(Color &left, const Color &right)sf::Colorrelated
    operator+(const Color &left, const Color &right)sf::Colorrelated
    operator+=(Color &left, const Color &right)sf::Colorrelated
    operator-(const Color &left, const Color &right)sf::Colorrelated
    operator-=(Color &left, const Color &right)sf::Colorrelated
    operator==(const Color &left, const Color &right)sf::Colorrelated
    rsf::Color
    Redsf::Colorstatic
    toInteger() constsf::Color
    Transparentsf::Colorstatic
    Whitesf::Colorstatic
    Yellowsf::Colorstatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1Color.html b/SFML/doc/html/classsf_1_1Color.html new file mode 100644 index 0000000..7c3dcf9 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Color.html @@ -0,0 +1,987 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Utility class for manipulating RGBA colors. + More...

    + +

    #include <Color.hpp>

    + + + + + + + + + + + + + + +

    +Public Member Functions

     Color ()
     Default constructor. More...
     
     Color (Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha=255)
     Construct the color from its 4 RGBA components. More...
     
     Color (Uint32 color)
     Construct the color from 32-bit unsigned integer. More...
     
    Uint32 toInteger () const
     Retrieve the color as a 32-bit unsigned integer. More...
     
    + + + + + + + + + + + + + +

    +Public Attributes

    Uint8 r
     Red component. More...
     
    Uint8 g
     Green component. More...
     
    Uint8 b
     Blue component. More...
     
    Uint8 a
     Alpha (opacity) component. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Attributes

    static const Color Black
     Black predefined color. More...
     
    static const Color White
     White predefined color. More...
     
    static const Color Red
     Red predefined color. More...
     
    static const Color Green
     Green predefined color. More...
     
    static const Color Blue
     Blue predefined color. More...
     
    static const Color Yellow
     Yellow predefined color. More...
     
    static const Color Magenta
     Magenta predefined color. More...
     
    static const Color Cyan
     Cyan predefined color. More...
     
    static const Color Transparent
     Transparent (black) predefined color. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    bool operator== (const Color &left, const Color &right)
     Overload of the == operator. More...
     
    bool operator!= (const Color &left, const Color &right)
     Overload of the != operator. More...
     
    Color operator+ (const Color &left, const Color &right)
     Overload of the binary + operator. More...
     
    Color operator- (const Color &left, const Color &right)
     Overload of the binary - operator. More...
     
    Color operator* (const Color &left, const Color &right)
     Overload of the binary * operator. More...
     
    Coloroperator+= (Color &left, const Color &right)
     Overload of the binary += operator. More...
     
    Coloroperator-= (Color &left, const Color &right)
     Overload of the binary -= operator. More...
     
    Coloroperator*= (Color &left, const Color &right)
     Overload of the binary *= operator. More...
     
    +

    Detailed Description

    +

    Utility class for manipulating RGBA colors.

    +

    sf::Color is a simple color class composed of 4 components:

    +
      +
    • Red
    • +
    • Green
    • +
    • Blue
    • +
    • Alpha (opacity)
    • +
    +

    Each component is a public member, an unsigned integer in the range [0, 255]. Thus, colors can be constructed and manipulated very easily:

    +
    sf::Color color(255, 0, 0); // red
    color.r = 0; // make it black
    color.b = 128; // make it dark blue

    The fourth component of colors, named "alpha", represents the opacity of the color. A color with an alpha value of 255 will be fully opaque, while an alpha value of 0 will make a color fully transparent, whatever the value of the other components is.

    +

    The most common colors are already defined as static variables:

    Colors can also be added and modulated (multiplied) using the overloaded operators + and *.

    + +

    Definition at line 40 of file Color.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Color() [1/3]

    + +
    +
    + + + + + + + +
    sf::Color::Color ()
    +
    + +

    Default constructor.

    +

    Constructs an opaque black color. It is equivalent to sf::Color(0, 0, 0, 255).

    + +
    +
    + +

    ◆ Color() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Color::Color (Uint8 red,
    Uint8 green,
    Uint8 blue,
    Uint8 alpha = 255 
    )
    +
    + +

    Construct the color from its 4 RGBA components.

    +
    Parameters
    + + + + + +
    redRed component (in the range [0, 255])
    greenGreen component (in the range [0, 255])
    blueBlue component (in the range [0, 255])
    alphaAlpha (opacity) component (in the range [0, 255])
    +
    +
    + +
    +
    + +

    ◆ Color() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::Color::Color (Uint32 color)
    +
    +explicit
    +
    + +

    Construct the color from 32-bit unsigned integer.

    +
    Parameters
    + + +
    colorNumber containing the RGBA components (in that order)
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ toInteger()

    + +
    +
    + + + + + + + +
    Uint32 sf::Color::toInteger () const
    +
    + +

    Retrieve the color as a 32-bit unsigned integer.

    +
    Returns
    Color represented as a 32-bit unsigned integer
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the != operator.

    +

    This operator compares two colors and check if they are different.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    True if colors are different, false if they are equal
    + +
    +
    + +

    ◆ operator*()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color operator* (const Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary * operator.

    +

    This operator returns the component-wise multiplication (also called "modulation") of two colors. Components are then divided by 255 so that the result is still in the range [0, 255].

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Result of left * right
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color & operator*= (Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary *= operator.

    +

    This operator returns the component-wise multiplication (also called "modulation") of two colors, and assigns the result to the left operand. Components are then divided by 255 so that the result is still in the range [0, 255].

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color operator+ (const Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary + operator.

    +

    This operator returns the component-wise sum of two colors. Components that exceed 255 are clamped to 255.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Result of left + right
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color & operator+= (Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary += operator.

    +

    This operator computes the component-wise sum of two colors, and assigns the result to the left operand. Components that exceed 255 are clamped to 255.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator-()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color operator- (const Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary - operator.

    +

    This operator returns the component-wise subtraction of two colors. Components below 0 are clamped to 0.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Result of left - right
    + +
    +
    + +

    ◆ operator-=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Color & operator-= (Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the binary -= operator.

    +

    This operator computes the component-wise subtraction of two colors, and assigns the result to the left operand. Components below 0 are clamped to 0.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Colorleft,
    const Colorright 
    )
    +
    +related
    +
    + +

    Overload of the == operator.

    +

    This operator compares two colors and check if they are equal.

    +
    Parameters
    + + + +
    leftLeft operand
    rightRight operand
    +
    +
    +
    Returns
    True if colors are equal, false if they are different
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ a

    + +
    +
    + + + + +
    Uint8 sf::Color::a
    +
    + +

    Alpha (opacity) component.

    + +

    Definition at line 99 of file Color.hpp.

    + +
    +
    + +

    ◆ b

    + +
    +
    + + + + +
    Uint8 sf::Color::b
    +
    + +

    Blue component.

    + +

    Definition at line 98 of file Color.hpp.

    + +
    +
    + +

    ◆ Black

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Black
    +
    +static
    +
    + +

    Black predefined color.

    + +

    Definition at line 83 of file Color.hpp.

    + +
    +
    + +

    ◆ Blue

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Blue
    +
    +static
    +
    + +

    Blue predefined color.

    + +

    Definition at line 87 of file Color.hpp.

    + +
    +
    + +

    ◆ Cyan

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Cyan
    +
    +static
    +
    + +

    Cyan predefined color.

    + +

    Definition at line 90 of file Color.hpp.

    + +
    +
    + +

    ◆ g

    + +
    +
    + + + + +
    Uint8 sf::Color::g
    +
    + +

    Green component.

    + +

    Definition at line 97 of file Color.hpp.

    + +
    +
    + +

    ◆ Green

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Green
    +
    +static
    +
    + +

    Green predefined color.

    + +

    Definition at line 86 of file Color.hpp.

    + +
    +
    + +

    ◆ Magenta

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Magenta
    +
    +static
    +
    + +

    Magenta predefined color.

    + +

    Definition at line 89 of file Color.hpp.

    + +
    +
    + +

    ◆ r

    + +
    +
    + + + + +
    Uint8 sf::Color::r
    +
    + +

    Red component.

    + +

    Definition at line 96 of file Color.hpp.

    + +
    +
    + +

    ◆ Red

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Red
    +
    +static
    +
    + +

    Red predefined color.

    + +

    Definition at line 85 of file Color.hpp.

    + +
    +
    + +

    ◆ Transparent

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Transparent
    +
    +static
    +
    + +

    Transparent (black) predefined color.

    + +

    Definition at line 91 of file Color.hpp.

    + +
    +
    + +

    ◆ White

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::White
    +
    +static
    +
    + +

    White predefined color.

    + +

    Definition at line 84 of file Color.hpp.

    + +
    +
    + +

    ◆ Yellow

    + +
    +
    + + + + + +
    + + + + +
    const Color sf::Color::Yellow
    +
    +static
    +
    + +

    Yellow predefined color.

    + +

    Definition at line 88 of file Color.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Context-members.html b/SFML/doc/html/classsf_1_1Context-members.html new file mode 100644 index 0000000..0d2bb7b --- /dev/null +++ b/SFML/doc/html/classsf_1_1Context-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Context Member List
    +
    +
    + +

    This is the complete list of members for sf::Context, including all inherited members.

    + + + + + + + + + + + + + + + +
    Context()sf::Context
    Context(const ContextSettings &settings, unsigned int width, unsigned int height)sf::Context
    getActiveContext()sf::Contextstatic
    getActiveContextId()sf::Contextstatic
    getFunction(const char *name)sf::Contextstatic
    getSettings() constsf::Context
    GlResource()sf::GlResourceprivate
    isExtensionAvailable(const char *name)sf::Contextstatic
    NonCopyable()sf::NonCopyableinlineprivate
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
    setActive(bool active)sf::Context
    ~Context()sf::Context
    ~GlResource()sf::GlResourceprivate
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Context.html b/SFML/doc/html/classsf_1_1Context.html new file mode 100644 index 0000000..0cd5a84 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Context.html @@ -0,0 +1,392 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Class holding a valid drawing context. + More...

    + +

    #include <Context.hpp>

    +
    +Inheritance diagram for sf::Context:
    +
    +
    + + +sf::GlResource +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Context ()
     Default constructor. More...
     
     ~Context ()
     Destructor. More...
     
    bool setActive (bool active)
     Activate or deactivate explicitly the context. More...
     
    const ContextSettingsgetSettings () const
     Get the settings of the context. More...
     
     Context (const ContextSettings &settings, unsigned int width, unsigned int height)
     Construct a in-memory context. More...
     
    + + + + + + + + + + + + + +

    +Static Public Member Functions

    static bool isExtensionAvailable (const char *name)
     Check whether a given OpenGL extension is available. More...
     
    static GlFunctionPointer getFunction (const char *name)
     Get the address of an OpenGL function. More...
     
    static const ContextgetActiveContext ()
     Get the currently active context. More...
     
    static Uint64 getActiveContextId ()
     Get the currently active context's ID. More...
     
    + + + + +

    +Static Private Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    +

    Detailed Description

    +

    Class holding a valid drawing context.

    +

    If you need to make OpenGL calls without having an active window (like in a thread), you can use an instance of this class to get a valid context.

    +

    Having a valid context is necessary for every OpenGL call.

    +

    Note that a context is only active in its current thread, if you create a new thread it will have no valid context by default.

    +

    To use a sf::Context instance, just construct it and let it live as long as you need a valid context. No explicit activation is needed, all it has to do is to exist. Its destructor will take care of deactivating and freeing all the attached resources.

    +

    Usage example:

    void threadFunction(void*)
    {
    sf::Context context;
    // from now on, you have a valid context
    // you can make OpenGL calls
    glClear(GL_DEPTH_BUFFER_BIT);
    }
    // the context is automatically deactivated and destroyed
    // by the sf::Context destructor
    +

    Definition at line 50 of file Context.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Context() [1/2]

    + +
    +
    + + + + + + + +
    sf::Context::Context ()
    +
    + +

    Default constructor.

    +

    The constructor creates and activates the context

    + +
    +
    + +

    ◆ ~Context()

    + +
    +
    + + + + + + + +
    sf::Context::~Context ()
    +
    + +

    Destructor.

    +

    The destructor deactivates and destroys the context

    + +
    +
    + +

    ◆ Context() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Context::Context (const ContextSettingssettings,
    unsigned int width,
    unsigned int height 
    )
    +
    + +

    Construct a in-memory context.

    +

    This constructor is for internal use, you don't need to bother with it.

    +
    Parameters
    + + + + +
    settingsCreation parameters
    widthBack buffer width
    heightBack buffer height
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getActiveContext()

    + +
    +
    + + + + + +
    + + + + + + + +
    static const Context* sf::Context::getActiveContext ()
    +
    +static
    +
    + +

    Get the currently active context.

    +

    This function will only return sf::Context objects. Contexts created e.g. by RenderTargets or for internal use will not be returned by this function.

    +
    Returns
    The currently active context or NULL if none is active
    + +
    +
    + +

    ◆ getActiveContextId()

    + +
    +
    + + + + + +
    + + + + + + + +
    static Uint64 sf::Context::getActiveContextId ()
    +
    +static
    +
    + +

    Get the currently active context's ID.

    +

    The context ID is used to identify contexts when managing unshareable OpenGL resources.

    +
    Returns
    The active context's ID or 0 if no context is currently active
    + +
    +
    + +

    ◆ getFunction()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static GlFunctionPointer sf::Context::getFunction (const char * name)
    +
    +static
    +
    + +

    Get the address of an OpenGL function.

    +
    Parameters
    + + +
    nameName of the function to get the address of
    +
    +
    +
    Returns
    Address of the OpenGL function, 0 on failure
    + +
    +
    + +

    ◆ getSettings()

    + +
    +
    + + + + + + + +
    const ContextSettings& sf::Context::getSettings () const
    +
    + +

    Get the settings of the context.

    +

    Note that these settings may be different than the ones passed to the constructor; they are indeed adjusted if the original settings are not directly supported by the system.

    +
    Returns
    Structure containing the settings
    + +
    +
    + +

    ◆ isExtensionAvailable()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Context::isExtensionAvailable (const char * name)
    +
    +static
    +
    + +

    Check whether a given OpenGL extension is available.

    +
    Parameters
    + + +
    nameName of the extension to check for
    +
    +
    +
    Returns
    True if available, false if unavailable
    + +
    +
    + +

    ◆ setActive()

    + +
    +
    + + + + + + + + +
    bool sf::Context::setActive (bool active)
    +
    + +

    Activate or deactivate explicitly the context.

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True on success, false on failure
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Context.png b/SFML/doc/html/classsf_1_1Context.png new file mode 100644 index 0000000000000000000000000000000000000000..b82e46ea8433c761d0ecead6c30b0e54c73c0788 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^cYrv6gBeJ=etRtdq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0ay?xfLn;{G&b>KpwSs`__Vz#j&F`0W zh%|R@GxOea_4H&nhf}eW*S82b32*$@3M2(pRyOL)Q8Arx*z;1R+_@%pVq_^6cu~hfI2t>2PH9Ul zWA3q;ub-tq0Yq_-U7VYU=U$`P#%x=4^!O1;q4A=cuziqv1smkA} zX7-OJmAE`@_nMUTO5&Y%^znlGH>+AEFR3lE@U+rxpS~T_v96(vDTCO+n6gh$ocbEPudbCW^pXo8YNk3(V+dbfI%II!(Vj=UVgetSAYIZ zn|EymX{AzPyRBQL52qwebt%{tZ+^yp_QAc1cmC`%K32WO&Ok8q`xn8TmG_Qlx1W|Z zn4a#QxsyN7^Vqxxn{@=!we6lO^Z0g-2W!>pd?_Dy=Z+)L9`P=Kwv~RmPX1wl` zFKqCB0<`ngLk2$}UN_}1;~XH4S(zx&rpEMR?mtGyUD{l7UK`wjiIKt6)z4*}Q$iB} Dpx9O< literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1ConvexShape-members.html b/SFML/doc/html/classsf_1_1ConvexShape-members.html new file mode 100644 index 0000000..7a9b509 --- /dev/null +++ b/SFML/doc/html/classsf_1_1ConvexShape-members.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::ConvexShape Member List
    +
    +
    + +

    This is the complete list of members for sf::ConvexShape, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConvexShape(std::size_t pointCount=0)sf::ConvexShapeexplicit
    getFillColor() constsf::Shape
    getGlobalBounds() constsf::Shape
    getInverseTransform() constsf::Transformable
    getLocalBounds() constsf::Shape
    getOrigin() constsf::Transformable
    getOutlineColor() constsf::Shape
    getOutlineThickness() constsf::Shape
    getPoint(std::size_t index) constsf::ConvexShapevirtual
    getPointCount() constsf::ConvexShapevirtual
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getTexture() constsf::Shape
    getTextureRect() constsf::Shape
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setFillColor(const Color &color)sf::Shape
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setOutlineColor(const Color &color)sf::Shape
    setOutlineThickness(float thickness)sf::Shape
    setPoint(std::size_t index, const Vector2f &point)sf::ConvexShape
    setPointCount(std::size_t count)sf::ConvexShape
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setTexture(const Texture *texture, bool resetRect=false)sf::Shape
    setTextureRect(const IntRect &rect)sf::Shape
    Shape()sf::Shapeprotected
    Transformable()sf::Transformable
    update()sf::Shapeprotected
    ~Drawable()sf::Drawableinlinevirtual
    ~Shape()sf::Shapevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1ConvexShape.html b/SFML/doc/html/classsf_1_1ConvexShape.html new file mode 100644 index 0000000..761eace --- /dev/null +++ b/SFML/doc/html/classsf_1_1ConvexShape.html @@ -0,0 +1,1456 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized shape representing a convex polygon. + More...

    + +

    #include <ConvexShape.hpp>

    +
    +Inheritance diagram for sf::ConvexShape:
    +
    +
    + + +sf::Shape +sf::Drawable +sf::Transformable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ConvexShape (std::size_t pointCount=0)
     Default constructor. More...
     
    void setPointCount (std::size_t count)
     Set the number of points of the polygon. More...
     
    virtual std::size_t getPointCount () const
     Get the number of points of the polygon. More...
     
    void setPoint (std::size_t index, const Vector2f &point)
     Set the position of a point. More...
     
    virtual Vector2f getPoint (std::size_t index) const
     Get the position of a point. More...
     
    void setTexture (const Texture *texture, bool resetRect=false)
     Change the source texture of the shape. More...
     
    void setTextureRect (const IntRect &rect)
     Set the sub-rectangle of the texture that the shape will display. More...
     
    void setFillColor (const Color &color)
     Set the fill color of the shape. More...
     
    void setOutlineColor (const Color &color)
     Set the outline color of the shape. More...
     
    void setOutlineThickness (float thickness)
     Set the thickness of the shape's outline. More...
     
    const TexturegetTexture () const
     Get the source texture of the shape. More...
     
    const IntRectgetTextureRect () const
     Get the sub-rectangle of the texture displayed by the shape. More...
     
    const ColorgetFillColor () const
     Get the fill color of the shape. More...
     
    const ColorgetOutlineColor () const
     Get the outline color of the shape. More...
     
    float getOutlineThickness () const
     Get the outline thickness of the shape. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global (non-minimal) bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    + + + + +

    +Protected Member Functions

    void update ()
     Recompute the internal geometry of the shape. More...
     
    +

    Detailed Description

    +

    Specialized shape representing a convex polygon.

    +

    This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

    +

    It is important to keep in mind that a convex shape must always be... convex, otherwise it may not be drawn correctly. Moreover, the points must be defined in order; using a random order would result in an incorrect shape.

    +

    Usage example:

    polygon.setPointCount(3);
    polygon.setPoint(0, sf::Vector2f(0, 0));
    polygon.setPoint(1, sf::Vector2f(0, 10));
    polygon.setPoint(2, sf::Vector2f(25, 5));
    polygon.setPosition(10, 20);
    ...
    window.draw(polygon);
    See also
    sf::Shape, sf::RectangleShape, sf::CircleShape
    + +

    Definition at line 42 of file ConvexShape.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ConvexShape()

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::ConvexShape::ConvexShape (std::size_t pointCount = 0)
    +
    +explicit
    +
    + +

    Default constructor.

    +
    Parameters
    + + +
    pointCountNumber of points of the polygon
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getFillColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getFillColor () const
    +
    +inherited
    +
    + +

    Get the fill color of the shape.

    +
    Returns
    Fill color of the shape
    +
    See also
    setFillColor
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getGlobalBounds () const
    +
    +inherited
    +
    + +

    Get the global (non-minimal) bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

    +

    This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getLocalBounds () const
    +
    +inherited
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getOutlineColor () const
    +
    +inherited
    +
    + +

    Get the outline color of the shape.

    +
    Returns
    Outline color of the shape
    +
    See also
    setOutlineColor
    + +
    +
    + +

    ◆ getOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Shape::getOutlineThickness () const
    +
    +inherited
    +
    + +

    Get the outline thickness of the shape.

    +
    Returns
    Outline thickness of the shape
    +
    See also
    setOutlineThickness
    + +
    +
    + +

    ◆ getPoint()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Vector2f sf::ConvexShape::getPoint (std::size_t index) const
    +
    +virtual
    +
    + +

    Get the position of a point.

    +

    The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

    +
    Parameters
    + + +
    indexIndex of the point to get, in range [0 .. getPointCount() - 1]
    +
    +
    +
    Returns
    Position of the index-th point of the polygon
    +
    See also
    setPoint
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPointCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::size_t sf::ConvexShape::getPointCount () const
    +
    +virtual
    +
    + +

    Get the number of points of the polygon.

    +
    Returns
    Number of points of the polygon
    +
    See also
    setPointCount
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Texture* sf::Shape::getTexture () const
    +
    +inherited
    +
    + +

    Get the source texture of the shape.

    +

    If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

    +
    Returns
    Pointer to the shape's texture
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ getTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + +
    const IntRect& sf::Shape::getTextureRect () const
    +
    +inherited
    +
    + +

    Get the sub-rectangle of the texture displayed by the shape.

    +
    Returns
    Texture rectangle of the shape
    +
    See also
    setTextureRect
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setFillColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setFillColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the fill color of the shape.

    +

    This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

    +
    Parameters
    + + +
    colorNew color of the shape
    +
    +
    +
    See also
    getFillColor, setOutlineColor
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the outline color of the shape.

    +

    By default, the shape's outline color is opaque white.

    +
    Parameters
    + + +
    colorNew outline color of the shape
    +
    +
    +
    See also
    getOutlineColor, setFillColor
    + +
    +
    + +

    ◆ setOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineThickness (float thickness)
    +
    +inherited
    +
    + +

    Set the thickness of the shape's outline.

    +

    Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

    +
    Parameters
    + + +
    thicknessNew outline thickness
    +
    +
    +
    See also
    getOutlineThickness
    + +
    +
    + +

    ◆ setPoint()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::ConvexShape::setPoint (std::size_t index,
    const Vector2fpoint 
    )
    +
    + +

    Set the position of a point.

    +

    Don't forget that the polygon must remain convex, and the points need to stay ordered! setPointCount must be called first in order to set the total number of points. The result is undefined if index is out of the valid range.

    +
    Parameters
    + + + +
    indexIndex of the point to change, in range [0 .. getPointCount() - 1]
    pointNew position of the point
    +
    +
    +
    See also
    getPoint
    + +
    +
    + +

    ◆ setPointCount()

    + +
    +
    + + + + + + + + +
    void sf::ConvexShape::setPointCount (std::size_t count)
    +
    + +

    Set the number of points of the polygon.

    +

    count must be greater than 2 to define a valid shape.

    +
    Parameters
    + + +
    countNew number of points of the polygon
    +
    +
    +
    See also
    getPointCount
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setTexture()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shape::setTexture (const Texturetexture,
    bool resetRect = false 
    )
    +
    +inherited
    +
    + +

    Change the source texture of the shape.

    +

    The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

    +
    Parameters
    + + + +
    textureNew texture
    resetRectShould the texture rect be reset to the size of the new texture?
    +
    +
    +
    See also
    getTexture, setTextureRect
    + +
    +
    + +

    ◆ setTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setTextureRect (const IntRectrect)
    +
    +inherited
    +
    + +

    Set the sub-rectangle of the texture that the shape will display.

    +

    The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

    +
    Parameters
    + + +
    rectRectangle defining the region of the texture to display
    +
    +
    +
    See also
    getTextureRect, setTexture
    + +
    +
    + +

    ◆ update()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Shape::update ()
    +
    +protectedinherited
    +
    + +

    Recompute the internal geometry of the shape.

    +

    This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1ConvexShape.png b/SFML/doc/html/classsf_1_1ConvexShape.png new file mode 100644 index 0000000000000000000000000000000000000000..99b556c43087b320357363c7e93ab908de0a4c78 GIT binary patch literal 1022 zcmeAS@N?(olHy`uVBq!ia0vp^Pk^|CgBeI3*uQ-qkdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~?)7wW45?szJNNCR%~}F%x7)Se|DWXl z$0@q?ES|&}p!ZCTu5^qCK&sEKye9ifL z>?V~Qktz@gpK_;aKD(97s}#ALo-&^ACKkUw^GROiaP_@O6PD=wcQ2}nJ1870b@{tN z?fLL&n`f$iDn0o>tm2;J$&@9vYqs21DC(V`G;N0|r`O~Y-g@SFToaf4ubuv7)ydvT zBA>&JWKZ^s{;~3S`2So{;ji=T`I9xg{`p?dco!J|Tf~0inPu5FexDX3pHnZKurBrF zQZts?)}OmoLha(YUq(&p`NjLmK)ceQGwI>Y`RC<5?+0#BHM*(m$$9h8(bI0OH{5t)SLtixh{uGmd~RYKQJmgRNvzJ&2qBv zPgm;g#Q6$8rQS$S%Wbc1SrQuF5H&;Pz|t8i4zfN%4}yGz7VxQY7HFQIAalI%4->=w z1Lu829s~o0*|FmXaTd>Gj2ZTU;svhvK`?@ty!$$x(`gZ z^15W1zu(kXXn~lTrl)w)B!;a9o}Rk|CbO()Ek0+;{GeQdvFbVJq{lxPPOE$Dlli^9 z1{?r(2A&OaB;aa8p2HV-8uBj`C4h|fWQytVWV)gxX|bZ={q)18pGv$ziz=bv0D~>-Wk7krezK19jEIPezeuhXW+e=zC-uey-$pr>xBgFZDdhbym&KL z@JW;7-QBWXcQgFc zveIUh{mWi!@o&Pdy9NGkx3jdn12^{E(@HGmy+1kn>D>Q$;jxT*s+Ttcop?xv5ga#( mlNi9EBhi+a!FFKzA9jT%*Q0w5Ka~JxRt8U3KbLh*2~7aHhSg>O literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Cursor-members.html b/SFML/doc/html/classsf_1_1Cursor-members.html new file mode 100644 index 0000000..2c2f2c0 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Cursor-members.html @@ -0,0 +1,82 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Cursor Member List
    +
    +
    + +

    This is the complete list of members for sf::Cursor, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    Arrow enum valuesf::Cursor
    ArrowWait enum valuesf::Cursor
    Cross enum valuesf::Cursor
    Cursor()sf::Cursor
    Hand enum valuesf::Cursor
    Help enum valuesf::Cursor
    loadFromPixels(const Uint8 *pixels, Vector2u size, Vector2u hotspot)sf::Cursor
    loadFromSystem(Type type)sf::Cursor
    NonCopyable()sf::NonCopyableinlineprivate
    NotAllowed enum valuesf::Cursor
    SizeAll enum valuesf::Cursor
    SizeBottomLeftTopRight enum valuesf::Cursor
    SizeHorizontal enum valuesf::Cursor
    SizeTopLeftBottomRight enum valuesf::Cursor
    SizeVertical enum valuesf::Cursor
    Text enum valuesf::Cursor
    Type enum namesf::Cursor
    Wait enum valuesf::Cursor
    Window (defined in sf::Cursor)sf::Cursorfriend
    ~Cursor()sf::Cursor
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Cursor.html b/SFML/doc/html/classsf_1_1Cursor.html new file mode 100644 index 0000000..f24e73e --- /dev/null +++ b/SFML/doc/html/classsf_1_1Cursor.html @@ -0,0 +1,335 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Cursor defines the appearance of a system cursor. + More...

    + +

    #include <Cursor.hpp>

    +
    +Inheritance diagram for sf::Cursor:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + +

    +Public Types

    enum  Type {
    +  Arrow, +ArrowWait, +Wait, +Text, +
    +  Hand, +SizeHorizontal, +SizeVertical, +SizeTopLeftBottomRight, +
    +  SizeBottomLeftTopRight, +SizeAll, +Cross, +Help, +
    +  NotAllowed +
    + }
     Enumeration of the native system cursor types. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

     Cursor ()
     Default constructor. More...
     
     ~Cursor ()
     Destructor. More...
     
    bool loadFromPixels (const Uint8 *pixels, Vector2u size, Vector2u hotspot)
     Create a cursor with the provided image. More...
     
    bool loadFromSystem (Type type)
     Create a native system cursor. More...
     
    + + + +

    +Friends

    +class Window
     
    +

    Detailed Description

    +

    Cursor defines the appearance of a system cursor.

    +
    Warning
    Features related to Cursor are not supported on iOS and Android.
    +

    This class abstracts the operating system resources associated with either a native system cursor or a custom cursor.

    +

    After loading the cursor the graphical appearance with either loadFromPixels() or loadFromSystem(), the cursor can be changed with sf::Window::setMouseCursor().

    +

    The behaviour is undefined if the cursor is destroyed while in use by the window.

    +

    Usage example:

    sf::Window window;
    // ... create window as usual ...
    sf::Cursor cursor;
    window.setMouseCursor(cursor);
    See also
    sf::Window::setMouseCursor
    + +

    Definition at line 46 of file Cursor.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Type

    + +
    +
    + + + + +
    enum sf::Cursor::Type
    +
    + +

    Enumeration of the native system cursor types.

    +

    Refer to the following table to determine which cursor is available on which platform.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Type Linux Mac OS X Windows
    sf::Cursor::Arrow yes yes yes
    sf::Cursor::ArrowWait no no yes
    sf::Cursor::Wait yes no yes
    sf::Cursor::Text yes yes yes
    sf::Cursor::Hand yes yes yes
    sf::Cursor::SizeHorizontal yes yes yes
    sf::Cursor::SizeVertical yes yes yes
    sf::Cursor::SizeTopLeftBottomRight no yes* yes
    sf::Cursor::SizeBottomLeftTopRight no yes* yes
    sf::Cursor::SizeAll yes no yes
    sf::Cursor::Cross yes yes yes
    sf::Cursor::Help yes yes* yes
    sf::Cursor::NotAllowed yes yes yes
    +
      +
    • These cursor types are undocumented so may not be available on all versions, but have been tested on 10.13
    • +
    + + + + + + + + + + + + + + +
    Enumerator
    Arrow 

    Arrow cursor (default)

    +
    ArrowWait 

    Busy arrow cursor.

    +
    Wait 

    Busy cursor.

    +
    Text 

    I-beam, cursor when hovering over a field allowing text entry.

    +
    Hand 

    Pointing hand cursor.

    +
    SizeHorizontal 

    Horizontal double arrow cursor.

    +
    SizeVertical 

    Vertical double arrow cursor.

    +
    SizeTopLeftBottomRight 

    Double arrow cursor going from top-left to bottom-right.

    +
    SizeBottomLeftTopRight 

    Double arrow cursor going from bottom-left to top-right.

    +
    SizeAll 

    Combination of SizeHorizontal and SizeVertical.

    +
    Cross 

    Crosshair cursor.

    +
    Help 

    Help cursor.

    +
    NotAllowed 

    Action not allowed cursor.

    +
    + +

    Definition at line 76 of file Cursor.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Cursor()

    + +
    +
    + + + + + + + +
    sf::Cursor::Cursor ()
    +
    + +

    Default constructor.

    +

    This constructor doesn't actually create the cursor; initially the new instance is invalid and must not be used until either loadFromPixels() or loadFromSystem() is called and successfully created a cursor.

    + +
    +
    + +

    ◆ ~Cursor()

    + +
    +
    + + + + + + + +
    sf::Cursor::~Cursor ()
    +
    + +

    Destructor.

    +

    This destructor releases the system resources associated with this cursor, if any.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ loadFromPixels()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::Cursor::loadFromPixels (const Uint8 * pixels,
    Vector2u size,
    Vector2u hotspot 
    )
    +
    + +

    Create a cursor with the provided image.

    +

    pixels must be an array of width by height pixels in 32-bit RGBA format. If not, this will cause undefined behavior.

    +

    If pixels is null or either width or height are 0, the current cursor is left unchanged and the function will return false.

    +

    In addition to specifying the pixel data, you can also specify the location of the hotspot of the cursor. The hotspot is the pixel coordinate within the cursor image which will be located exactly where the mouse pointer position is. Any mouse actions that are performed will return the window/screen location of the hotspot.

    +
    Warning
    On Unix, the pixels are mapped into a monochrome bitmap: pixels with an alpha channel to 0 are transparent, black if the RGB channel are close to zero, and white otherwise.
    +
    Parameters
    + + + + +
    pixelsArray of pixels of the image
    sizeWidth and height of the image
    hotspot(x,y) location of the hotspot
    +
    +
    +
    Returns
    true if the cursor was successfully loaded; false otherwise
    + +
    +
    + +

    ◆ loadFromSystem()

    + +
    +
    + + + + + + + + +
    bool sf::Cursor::loadFromSystem (Type type)
    +
    + +

    Create a native system cursor.

    +

    Refer to the list of cursor available on each system (see sf::Cursor::Type) to know whether a given cursor is expected to load successfully or is not supported by the operating system.

    +
    Parameters
    + + +
    typeNative system cursor type
    +
    +
    +
    Returns
    true if and only if the corresponding cursor is natively supported by the operating system; false otherwise
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Cursor.png b/SFML/doc/html/classsf_1_1Cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..28c4e2f45361933f72040896d7528c597d7cb905 GIT binary patch literal 506 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004rNklDWa!AsJw)>^qj+Adc!yRLum?h=WAg!Uza$Rr?3dZF+8d7ehx$2uECeq4DPlS=@ z;glWHf=hGF*DTJG$|WD+RZ?-v4_=TC#fcSsmGs=eP%UH3{bM`A26~fZxAlNO-6z{) z$NI$HE4O4vy4B52QWaB1kkHnk(REpeG1T{Hp$!%(_YjiX-&XnQB0l+4qLX3a95-?ObWZr zN>Z|03qVB;Qc_Z~o1^SuYqt4RXr)t8c-b8duw0A2hQxFKm0LjV8(07*qoM6N<$f^Mwd7XSbN literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Drawable-members.html b/SFML/doc/html/classsf_1_1Drawable-members.html new file mode 100644 index 0000000..1308abc --- /dev/null +++ b/SFML/doc/html/classsf_1_1Drawable-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Drawable Member List
    +
    +
    + +

    This is the complete list of members for sf::Drawable, including all inherited members.

    + + + + +
    draw(RenderTarget &target, RenderStates states) const =0sf::Drawableprotectedpure virtual
    RenderTarget (defined in sf::Drawable)sf::Drawablefriend
    ~Drawable()sf::Drawableinlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Drawable.html b/SFML/doc/html/classsf_1_1Drawable.html new file mode 100644 index 0000000..c37f4c6 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Drawable.html @@ -0,0 +1,191 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Abstract base class for objects that can be drawn to a render target. + More...

    + +

    #include <Drawable.hpp>

    +
    +Inheritance diagram for sf::Drawable:
    +
    +
    + + +sf::Shape +sf::Sprite +sf::Text +sf::VertexArray +sf::VertexBuffer +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
    + + + + + +

    +Public Member Functions

    virtual ~Drawable ()
     Virtual destructor. More...
     
    + + + + +

    +Protected Member Functions

    virtual void draw (RenderTarget &target, RenderStates states) const =0
     Draw the object to a render target. More...
     
    + + + +

    +Friends

    +class RenderTarget
     
    +

    Detailed Description

    +

    Abstract base class for objects that can be drawn to a render target.

    +

    sf::Drawable is a very simple base class that allows objects of derived classes to be drawn to a sf::RenderTarget.

    +

    All you have to do in your derived class is to override the draw virtual function.

    +

    Note that inheriting from sf::Drawable is not mandatory, but it allows this nice syntax "window.draw(object)" rather than "object.draw(window)", which is more consistent with other SFML classes.

    +

    Example:

    class MyDrawable : public sf::Drawable
    {
    public:
    ...
    private:
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
    // You can draw other high-level objects
    target.draw(m_sprite, states);
    // ... or use the low-level API
    states.texture = &m_texture;
    target.draw(m_vertices, states);
    // ... or draw with OpenGL directly
    glBegin(GL_QUADS);
    ...
    glEnd();
    }
    sf::Sprite m_sprite;
    sf::Texture m_texture;
    sf::VertexArray m_vertices;
    };
    See also
    sf::RenderTarget
    + +

    Definition at line 44 of file Drawable.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~Drawable()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Drawable::~Drawable ()
    +
    +inlinevirtual
    +
    + +

    Virtual destructor.

    + +

    Definition at line 52 of file Drawable.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ draw()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void sf::Drawable::draw (RenderTargettarget,
    RenderStates states 
    ) const
    +
    +protectedpure virtual
    +
    + +

    Draw the object to a render target.

    +

    This is a pure virtual function that has to be implemented by the derived class to define how the drawable should be drawn.

    +
    Parameters
    + + + +
    targetRender target to draw to
    statesCurrent render states
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Drawable.png b/SFML/doc/html/classsf_1_1Drawable.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c9c218738eecf8fdab27ddea404759f021f66d GIT binary patch literal 2175 zcmb_edr%W;5+4SlA*is(OF^RxLJ)-LDqsvG?16yt6o!ZL2<3Vz=;E#6WdbC6yTFP@ z#Mc#sAUT5!LbCD*2$(2JYELxoxd8FN1>J>6gb zy1%X|jtmc4j$4g`AZU3=aKIi2GKPU(gf#|o|J56{;9(aT8WU(R7=Svip2_6gJqNVk zZmCp?DIUawS1f%`cr*lzK3$5x#cTo4ijV;Rm>eU`^NFmRWUIhonZ{0O*ibMN>_d1t zAZ&81JFu61!Tr2%nZ$w?x1z8s)qEY5wdPr^4IeUjT26qBNE>ieR(LUNQ59VcnT%gh z>?IHGb9hA2{pZaK9JD~Cjft24E>9#&$#(di2mR;o%H>a z*Yr0I<7EpezNY7)EXPwklPD<5>HnxN7LQEj=r25($|2_mTRPqGF;d_C34NnFyi@{Y z$jOvTP}cfSVXM$LH9x<1@wW;-=~M)VoHG%5PD*scL}oj)pdt=A`l|5`FVOD!;H7cA zz@VJje$QPtze*XR&C$(Fo=7Qo9zA0+0Efy(m|M!PQ|hGJFE3}C<2WkDDpP9&n4 z`U+Pv){3Ux6K^Euj$~q143U@E8;6b^$h)d{!zCuIjeU{YDiksYR`xfdXxx!a(q?Sm zP)Hq$)-auin@;UZO>Ce%nUVpOcOfW;meXfj_jNlqn|xf1rg8f) zK8z99CpP?D5^JT}6j3+`Etyud8`L#uch8slH5h@hPf|i}_bre>7AAS;72B^7#csbC z+Pk?}_WC`Df|QOc!Dn4ZG2M!71ftT75=~>Urf-YrliWOP)^I(XSVTGTF{`a@Irz}5 z#pcD{Kl`(1b%s!OZppxT#?V_y1p8V;H}{NeULal2lym0Q?k0>)!%K}SHSj}8402p= zjd6Bt)mJ{`p{R9>?Tb2WSyC06c9COsCG(et7JK6x&Q~(GCH0rv93A4<(`a=terbFp zt*KG(j}b)A2e7X`o1KIs97|*$7Z$OuW3s?5s zI&nk%&~0dFwhb0POGvg&-aQw>8tACVXqt$c_5_?31hP>SQKl^Tc}P)o^8l$H9i9`I zAPD|lqp6o$Br+peiK&)GY>0QLC0Jl?MbUDrs;QoCG(=GXnsSx?cLG5uVFHS2{ux*{ zGSzAfT6V-ltMUPJY2gdZIx4Rs{7(=}4*^3X@7)2a0}JxC1h6;&!ajD50xP?~3ilIK z17^^FgVcAyG0ikL882O^p_s0ddi)jQL-bG_5l5B%uc{QU$|0|%jMB+#Ir#G?M`5hU zScam!noWQmo+@qw3)*oGE`c9!c9jyKHD&)+r|CNL!m)|bZ(5Ia_O~RZ0p?0B!WG%c zphhiL5i7~Jc2F`FMF%-UehyL42i0F-O^Jt`8GTL6$%v+PPNS%)eKdJDv7jDJJDZ77 zF1N(c3NGQav9?kwzd(Z3?Z{d@I_Wnu)VRR&(x=g}T=)W53UwH}QgGIm2 zYA=Z&{jjr(KZ%hX^{Ix`@7X$-8T}4`pP$Uq}V-F9XgtfR-kDdTU>{lIVJBL^STxvL%TKE zWbRPeR^8q1|Ia9?i@nyZ)<54Xno!8zcsC`)(dwtycXje(*_&K#EZyHffB$y^G5>v) zv}L#m7E#P_P3cOV$1#caNO9$5!){D0iAQ+6DC@R5Z90}GY1WHPmFAxa7{iqaj;HQY z?J$&W$2ZraA94iJy(&(PuV2HKWd+Kx%@IV+{9#v5cLQ%(kQHko;VH($e&!HK$e4}H z?|PjX&D-k3OUf_rMHFizve^f@V(yCcccU-)uRtEb#Mcbbkqa;SqZ`eW!u{;d5}^6U zDk`Gz7Ddiw5I_aF-Mq0 zOoXPD;-kUwFHN}!!D{Mf`>_WM{kQ&>O`vV%)A$QadEH}55fS_?Kp}zQ0S#Z%PW}Vp C_Tymy literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Event-members.html b/SFML/doc/html/classsf_1_1Event-members.html new file mode 100644 index 0000000..5f89278 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Event-members.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Event Member List
    +
    + + + + + diff --git a/SFML/doc/html/classsf_1_1Event.html b/SFML/doc/html/classsf_1_1Event.html new file mode 100644 index 0000000..94b35e9 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Event.html @@ -0,0 +1,505 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Event Class Reference
    +
    +
    + +

    Defines a system event and its parameters. + More...

    + +

    #include <Event.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  JoystickButtonEvent
     Joystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased) More...
     
    struct  JoystickConnectEvent
     Joystick connection events parameters (JoystickConnected, JoystickDisconnected) More...
     
    struct  JoystickMoveEvent
     Joystick axis move event parameters (JoystickMoved) More...
     
    struct  KeyEvent
     Keyboard event parameters (KeyPressed, KeyReleased) More...
     
    struct  MouseButtonEvent
     Mouse buttons events parameters (MouseButtonPressed, MouseButtonReleased) More...
     
    struct  MouseMoveEvent
     Mouse move event parameters (MouseMoved) More...
     
    struct  MouseWheelEvent
     Mouse wheel events parameters (MouseWheelMoved) More...
     
    struct  MouseWheelScrollEvent
     Mouse wheel events parameters (MouseWheelScrolled) More...
     
    struct  SensorEvent
     Sensor event parameters (SensorChanged) More...
     
    struct  SizeEvent
     Size events parameters (Resized) More...
     
    struct  TextEvent
     Text event parameters (TextEntered) More...
     
    struct  TouchEvent
     Touch events parameters (TouchBegan, TouchMoved, TouchEnded) More...
     
    + + + + +

    +Public Types

    enum  EventType {
    +  Closed, +Resized, +LostFocus, +GainedFocus, +
    +  TextEntered, +KeyPressed, +KeyReleased, +MouseWheelMoved, +
    +  MouseWheelScrolled, +MouseButtonPressed, +MouseButtonReleased, +MouseMoved, +
    +  MouseEntered, +MouseLeft, +JoystickButtonPressed, +JoystickButtonReleased, +
    +  JoystickMoved, +JoystickConnected, +JoystickDisconnected, +TouchBegan, +
    +  TouchMoved, +TouchEnded, +SensorChanged, +Count +
    + }
     Enumeration of the different types of events. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    EventType type
     Type of the event. More...
     
    +union {
       SizeEvent   size
     Size event parameters (Event::Resized) More...
     
       KeyEvent   key
     Key event parameters (Event::KeyPressed, Event::KeyReleased) More...
     
       TextEvent   text
     Text event parameters (Event::TextEntered) More...
     
       MouseMoveEvent   mouseMove
     Mouse move event parameters (Event::MouseMoved) More...
     
       MouseButtonEvent   mouseButton
     Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased) More...
     
       MouseWheelEvent   mouseWheel
     Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated) More...
     
       MouseWheelScrollEvent   mouseWheelScroll
     Mouse wheel event parameters (Event::MouseWheelScrolled) More...
     
       JoystickMoveEvent   joystickMove
     Joystick move event parameters (Event::JoystickMoved) More...
     
       JoystickButtonEvent   joystickButton
     Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased) More...
     
       JoystickConnectEvent   joystickConnect
     Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected) More...
     
       TouchEvent   touch
     Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded) More...
     
       SensorEvent   sensor
     Sensor event parameters (Event::SensorChanged) More...
     
    }; 
     
    +

    Detailed Description

    +

    Defines a system event and its parameters.

    +

    sf::Event holds all the informations about a system event that just happened.

    +

    Events are retrieved using the sf::Window::pollEvent and sf::Window::waitEvent functions.

    +

    A sf::Event instance contains the type of the event (mouse moved, key pressed, window closed, ...) as well as the details about this particular event. Please note that the event parameters are defined in a union, which means that only the member matching the type of the event will be properly filled; all other members will have undefined values and must not be read if the type of the event doesn't match. For example, if you received a KeyPressed event, then you must read the event.key member, all other members such as event.mouseMove or event.text will have undefined values.

    +

    Usage example:

    sf::Event event;
    while (window.pollEvent(event))
    {
    // Request for closing the window
    if (event.type == sf::Event::Closed)
    window.close();
    // The escape key was pressed
    if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
    window.close();
    // The window was resized
    if (event.type == sf::Event::Resized)
    doSomethingWithTheNewSize(event.size.width, event.size.height);
    // etc ...
    }
    +

    Definition at line 44 of file Event.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ EventType

    + +
    +
    + + + + +
    enum sf::Event::EventType
    +
    + +

    Enumeration of the different types of events.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Closed 

    The window requested to be closed (no data)

    +
    Resized 

    The window was resized (data in event.size)

    +
    LostFocus 

    The window lost the focus (no data)

    +
    GainedFocus 

    The window gained the focus (no data)

    +
    TextEntered 

    A character was entered (data in event.text)

    +
    KeyPressed 

    A key was pressed (data in event.key)

    +
    KeyReleased 

    A key was released (data in event.key)

    +
    MouseWheelMoved 

    The mouse wheel was scrolled (data in event.mouseWheel) (deprecated)

    +
    MouseWheelScrolled 

    The mouse wheel was scrolled (data in event.mouseWheelScroll)

    +
    MouseButtonPressed 

    A mouse button was pressed (data in event.mouseButton)

    +
    MouseButtonReleased 

    A mouse button was released (data in event.mouseButton)

    +
    MouseMoved 

    The mouse cursor moved (data in event.mouseMove)

    +
    MouseEntered 

    The mouse cursor entered the area of the window (no data)

    +
    MouseLeft 

    The mouse cursor left the area of the window (no data)

    +
    JoystickButtonPressed 

    A joystick button was pressed (data in event.joystickButton)

    +
    JoystickButtonReleased 

    A joystick button was released (data in event.joystickButton)

    +
    JoystickMoved 

    The joystick moved along an axis (data in event.joystickMove)

    +
    JoystickConnected 

    A joystick was connected (data in event.joystickConnect)

    +
    JoystickDisconnected 

    A joystick was disconnected (data in event.joystickConnect)

    +
    TouchBegan 

    A touch event began (data in event.touch)

    +
    TouchMoved 

    A touch moved (data in event.touch)

    +
    TouchEnded 

    A touch event ended (data in event.touch)

    +
    SensorChanged 

    A sensor value changed (data in event.sensor)

    +
    Count 

    Keep last – the total number of event types.

    +
    + +

    Definition at line 187 of file Event.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ joystickButton

    + +
    +
    + + + + +
    JoystickButtonEvent sf::Event::joystickButton
    +
    + +

    Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased)

    + +

    Definition at line 231 of file Event.hpp.

    + +
    +
    + +

    ◆ joystickConnect

    + +
    +
    + + + + +
    JoystickConnectEvent sf::Event::joystickConnect
    +
    + +

    Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected)

    + +

    Definition at line 232 of file Event.hpp.

    + +
    +
    + +

    ◆ joystickMove

    + +
    +
    + + + + +
    JoystickMoveEvent sf::Event::joystickMove
    +
    + +

    Joystick move event parameters (Event::JoystickMoved)

    + +

    Definition at line 230 of file Event.hpp.

    + +
    +
    + +

    ◆ key

    + +
    +
    + + + + +
    KeyEvent sf::Event::key
    +
    + +

    Key event parameters (Event::KeyPressed, Event::KeyReleased)

    + +

    Definition at line 224 of file Event.hpp.

    + +
    +
    + +

    ◆ mouseButton

    + +
    +
    + + + + +
    MouseButtonEvent sf::Event::mouseButton
    +
    + +

    Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased)

    + +

    Definition at line 227 of file Event.hpp.

    + +
    +
    + +

    ◆ mouseMove

    + +
    +
    + + + + +
    MouseMoveEvent sf::Event::mouseMove
    +
    + +

    Mouse move event parameters (Event::MouseMoved)

    + +

    Definition at line 226 of file Event.hpp.

    + +
    +
    + +

    ◆ mouseWheel

    + +
    +
    + + + + +
    MouseWheelEvent sf::Event::mouseWheel
    +
    + +

    Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated)

    + +

    Definition at line 228 of file Event.hpp.

    + +
    +
    + +

    ◆ mouseWheelScroll

    + +
    +
    + + + + +
    MouseWheelScrollEvent sf::Event::mouseWheelScroll
    +
    + +

    Mouse wheel event parameters (Event::MouseWheelScrolled)

    + +

    Definition at line 229 of file Event.hpp.

    + +
    +
    + +

    ◆ sensor

    + +
    +
    + + + + +
    SensorEvent sf::Event::sensor
    +
    + +

    Sensor event parameters (Event::SensorChanged)

    + +

    Definition at line 234 of file Event.hpp.

    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    SizeEvent sf::Event::size
    +
    + +

    Size event parameters (Event::Resized)

    + +

    Definition at line 223 of file Event.hpp.

    + +
    +
    + +

    ◆ text

    + +
    +
    + + + + +
    TextEvent sf::Event::text
    +
    + +

    Text event parameters (Event::TextEntered)

    + +

    Definition at line 225 of file Event.hpp.

    + +
    +
    + +

    ◆ touch

    + +
    +
    + + + + +
    TouchEvent sf::Event::touch
    +
    + +

    Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded)

    + +

    Definition at line 233 of file Event.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    + + + + +
    EventType sf::Event::type
    +
    + +

    Type of the event.

    + +

    Definition at line 219 of file Event.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1FileInputStream-members.html b/SFML/doc/html/classsf_1_1FileInputStream-members.html new file mode 100644 index 0000000..561cc1e --- /dev/null +++ b/SFML/doc/html/classsf_1_1FileInputStream-members.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::FileInputStream Member List
    +
    +
    + +

    This is the complete list of members for sf::FileInputStream, including all inherited members.

    + + + + + + + + + + + +
    FileInputStream()sf::FileInputStream
    getSize()sf::FileInputStreamvirtual
    NonCopyable()sf::NonCopyableinlineprivate
    open(const std::string &filename)sf::FileInputStream
    read(void *data, Int64 size)sf::FileInputStreamvirtual
    seek(Int64 position)sf::FileInputStreamvirtual
    tell()sf::FileInputStreamvirtual
    ~FileInputStream()sf::FileInputStreamvirtual
    ~InputStream()sf::InputStreaminlinevirtual
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1FileInputStream.html b/SFML/doc/html/classsf_1_1FileInputStream.html new file mode 100644 index 0000000..01ead3d --- /dev/null +++ b/SFML/doc/html/classsf_1_1FileInputStream.html @@ -0,0 +1,334 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::FileInputStream Class Reference
    +
    +
    + +

    Implementation of input stream based on a file. + More...

    + +

    #include <FileInputStream.hpp>

    +
    +Inheritance diagram for sf::FileInputStream:
    +
    +
    + + +sf::InputStream +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     FileInputStream ()
     Default constructor. More...
     
    virtual ~FileInputStream ()
     Default destructor. More...
     
    bool open (const std::string &filename)
     Open the stream from a file path. More...
     
    virtual Int64 read (void *data, Int64 size)
     Read data from the stream. More...
     
    virtual Int64 seek (Int64 position)
     Change the current reading position. More...
     
    virtual Int64 tell ()
     Get the current reading position in the stream. More...
     
    virtual Int64 getSize ()
     Return the size of the stream. More...
     
    +

    Detailed Description

    +

    Implementation of input stream based on a file.

    +

    This class is a specialization of InputStream that reads from a file on disk.

    +

    It wraps a file in the common InputStream interface and therefore allows to use generic classes or functions that accept such a stream, with a file on disk as the data source.

    +

    In addition to the virtual functions inherited from InputStream, FileInputStream adds a function to specify the file to open.

    +

    SFML resource classes can usually be loaded directly from a filename, so this class shouldn't be useful to you unless you create your own algorithms that operate on an InputStream.

    +

    Usage example:

    void process(InputStream& stream);
    if (stream.open("some_file.dat"))
    process(stream);

    InputStream, MemoryInputStream

    + +

    Definition at line 55 of file FileInputStream.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ FileInputStream()

    + +
    +
    + + + + + + + +
    sf::FileInputStream::FileInputStream ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~FileInputStream()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::FileInputStream::~FileInputStream ()
    +
    +virtual
    +
    + +

    Default destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::FileInputStream::getSize ()
    +
    +virtual
    +
    + +

    Return the size of the stream.

    +
    Returns
    The total number of bytes available in the stream, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ open()

    + +
    +
    + + + + + + + + +
    bool sf::FileInputStream::open (const std::string & filename)
    +
    + +

    Open the stream from a file path.

    +
    Parameters
    + + +
    filenameName of the file to open
    +
    +
    +
    Returns
    True on success, false on error
    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual Int64 sf::FileInputStream::read (void * data,
    Int64 size 
    )
    +
    +virtual
    +
    + +

    Read data from the stream.

    +

    After reading, the stream's reading position must be advanced by the amount of bytes read.

    +
    Parameters
    + + + +
    dataBuffer where to copy the read data
    sizeDesired number of bytes to read
    +
    +
    +
    Returns
    The number of bytes actually read, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ seek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Int64 sf::FileInputStream::seek (Int64 position)
    +
    +virtual
    +
    + +

    Change the current reading position.

    +
    Parameters
    + + +
    positionThe position to seek to, from the beginning
    +
    +
    +
    Returns
    The position actually sought to, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ tell()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::FileInputStream::tell ()
    +
    +virtual
    +
    + +

    Get the current reading position in the stream.

    +
    Returns
    The current position, or -1 on error.
    + +

    Implements sf::InputStream.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1FileInputStream.png b/SFML/doc/html/classsf_1_1FileInputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..ee26b028f9d85eba0643492b011093af89c975cd GIT binary patch literal 842 zcmV-Q1GW5#P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0008nNklyoP=5C)r%E#Lo~h3ple9kr9owA7{p;3+vvVi#6dYZVXmNH(~QZ zwHotuXb8VXxjerd`6(^y(pk8)cjlHfDc=j%ajWjK8LXRI&z3u`EnKE_(VNZVe0sBN zDh9YixDj_HtP##m)qr;hSDCXZob~!FC#jYl6mG;#yJC-U*iCt3QR3P~D;wvAuq|5o z6w4_clI*cww92>#gzc8EhPZbRSHjh%ZU|TVUy?Gu-NUvT*GXFhO;6Yn9NEL!wk&p0 zD8jMRkisdU!YM4y4^rB`Xe)1)wM9WrHRTohK$VuHHpf1_r5OxKVt$oi!XrAe46ky zooM{^)!+Ejgde`=89#ix8-JYe$wdpGH{-JeaA(E}1KgRh!T@(>tT4cx`MedLrfE72 zfIr395CC^(2m{=iAq;S5hA_aL8NvW}W(Wh^nIQ~tXa1_NbIx@J;5_<=AHo3r7{UN= zWe5ZGBM%=-XsD;JX+$?p8l++rpL;5@QXnCwk^vYLqIX;Ch*FJ4MG z4Y!rjc?DY$wk>JG%!}6&UMa}sP}hWQ(aKjBM>?*!hu4Jjt7Ne*T)ueGlx`I*TcvHW zUP{qY;cdaPRXWt@tEDu+UjAp$Ll~eRLm1$#3}JwN3}Jw`GK2y8;hb}w0r(I80XlFp U0%_B0JOBUy07*qoM6N<$f+@O>!T + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Font Member List
    +
    +
    + +

    This is the complete list of members for sf::Font, including all inherited members.

    + + + + + + + + + + + + + + + +
    Font()sf::Font
    Font(const Font &copy)sf::Font
    getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) constsf::Font
    getInfo() constsf::Font
    getKerning(Uint32 first, Uint32 second, unsigned int characterSize) constsf::Font
    getLineSpacing(unsigned int characterSize) constsf::Font
    getTexture(unsigned int characterSize) constsf::Font
    getUnderlinePosition(unsigned int characterSize) constsf::Font
    getUnderlineThickness(unsigned int characterSize) constsf::Font
    loadFromFile(const std::string &filename)sf::Font
    loadFromMemory(const void *data, std::size_t sizeInBytes)sf::Font
    loadFromStream(InputStream &stream)sf::Font
    operator=(const Font &right)sf::Font
    ~Font()sf::Font
    + + + + diff --git a/SFML/doc/html/classsf_1_1Font.html b/SFML/doc/html/classsf_1_1Font.html new file mode 100644 index 0000000..67cec41 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Font.html @@ -0,0 +1,568 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Class for loading and manipulating character fonts. + More...

    + +

    #include <Font.hpp>

    + + + + + +

    +Classes

    struct  Info
     Holds various information about a font. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Font ()
     Default constructor. More...
     
     Font (const Font &copy)
     Copy constructor. More...
     
     ~Font ()
     Destructor. More...
     
    bool loadFromFile (const std::string &filename)
     Load the font from a file. More...
     
    bool loadFromMemory (const void *data, std::size_t sizeInBytes)
     Load the font from a file in memory. More...
     
    bool loadFromStream (InputStream &stream)
     Load the font from a custom stream. More...
     
    const InfogetInfo () const
     Get the font information. More...
     
    const GlyphgetGlyph (Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) const
     Retrieve a glyph of the font. More...
     
    float getKerning (Uint32 first, Uint32 second, unsigned int characterSize) const
     Get the kerning offset of two glyphs. More...
     
    float getLineSpacing (unsigned int characterSize) const
     Get the line spacing. More...
     
    float getUnderlinePosition (unsigned int characterSize) const
     Get the position of the underline. More...
     
    float getUnderlineThickness (unsigned int characterSize) const
     Get the thickness of the underline. More...
     
    const TexturegetTexture (unsigned int characterSize) const
     Retrieve the texture containing the loaded glyphs of a certain size. More...
     
    Fontoperator= (const Font &right)
     Overload of assignment operator. More...
     
    +

    Detailed Description

    +

    Class for loading and manipulating character fonts.

    +

    Fonts can be loaded from a file, from memory or from a custom stream, and supports the most common types of fonts.

    +

    See the loadFromFile function for the complete list of supported formats.

    +

    Once it is loaded, a sf::Font instance provides three types of information about the font:

      +
    • Global metrics, such as the line spacing
    • +
    • Per-glyph metrics, such as bounding box or kerning
    • +
    • Pixel representation of glyphs
    • +
    +

    Fonts alone are not very useful: they hold the font data but cannot make anything useful of it. To do so you need to use the sf::Text class, which is able to properly output text with several options such as character size, style, color, position, rotation, etc. This separation allows more flexibility and better performances: indeed a sf::Font is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Text is a lightweight object which can combine the glyphs data and metrics of a sf::Font to display any text on a render target. Note that it is also possible to bind several sf::Text instances to the same sf::Font.

    +

    It is important to note that the sf::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a sf::Font must not be destructed while it is used by a sf::Text (i.e. never write a function that uses a local sf::Font instance for creating a text).

    +

    Usage example:

    // Declare a new font
    sf::Font font;
    // Load it from a file
    if (!font.loadFromFile("arial.ttf"))
    {
    // error...
    }
    // Create a text which uses our font
    sf::Text text1;
    text1.setFont(font);
    text1.setCharacterSize(30);
    // Create another text using the same font, but with different parameters
    sf::Text text2;
    text2.setFont(font);
    text2.setCharacterSize(50);

    Apart from loading font files, and passing them to instances of sf::Text, you should normally not have to deal directly with this class. However, it may be useful to access the font metrics or rasterized glyphs for advanced usage.

    +

    Note that if the font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when using sf::Text. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

    +
    See also
    sf::Text
    + +

    Definition at line 50 of file Font.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Font() [1/2]

    + +
    +
    + + + + + + + +
    sf::Font::Font ()
    +
    + +

    Default constructor.

    +

    This constructor defines an empty font

    + +
    +
    + +

    ◆ Font() [2/2]

    + +
    +
    + + + + + + + + +
    sf::Font::Font (const Fontcopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~Font()

    + +
    +
    + + + + + + + +
    sf::Font::~Font ()
    +
    + +

    Destructor.

    +

    Cleans up all the internal resources used by the font

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getGlyph()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    const Glyph& sf::Font::getGlyph (Uint32 codePoint,
    unsigned int characterSize,
    bool bold,
    float outlineThickness = 0 
    ) const
    +
    + +

    Retrieve a glyph of the font.

    +

    If the font is a bitmap font, not all character sizes might be available. If the glyph is not available at the requested size, an empty glyph is returned.

    +

    Be aware that using a negative value for the outline thickness will cause distorted rendering.

    +
    Parameters
    + + + + + +
    codePointUnicode code point of the character to get
    characterSizeReference character size
    boldRetrieve the bold version or the regular one?
    outlineThicknessThickness of outline (when != 0 the glyph will not be filled)
    +
    +
    +
    Returns
    The glyph corresponding to codePoint and characterSize
    + +
    +
    + +

    ◆ getInfo()

    + +
    +
    + + + + + + + +
    const Info& sf::Font::getInfo () const
    +
    + +

    Get the font information.

    +
    Returns
    A structure that holds the font information
    + +
    +
    + +

    ◆ getKerning()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    float sf::Font::getKerning (Uint32 first,
    Uint32 second,
    unsigned int characterSize 
    ) const
    +
    + +

    Get the kerning offset of two glyphs.

    +

    The kerning is an extra offset (negative) to apply between two glyphs when rendering them, to make the pair look more "natural". For example, the pair "AV" have a special kerning to make them closer than other characters. Most of the glyphs pairs have a kerning offset of zero, though.

    +
    Parameters
    + + + + +
    firstUnicode code point of the first character
    secondUnicode code point of the second character
    characterSizeReference character size
    +
    +
    +
    Returns
    Kerning value for first and second, in pixels
    + +
    +
    + +

    ◆ getLineSpacing()

    + +
    +
    + + + + + + + + +
    float sf::Font::getLineSpacing (unsigned int characterSize) const
    +
    + +

    Get the line spacing.

    +

    Line spacing is the vertical offset to apply between two consecutive lines of text.

    +
    Parameters
    + + +
    characterSizeReference character size
    +
    +
    +
    Returns
    Line spacing, in pixels
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + + + + +
    const Texture& sf::Font::getTexture (unsigned int characterSize) const
    +
    + +

    Retrieve the texture containing the loaded glyphs of a certain size.

    +

    The contents of the returned texture changes as more glyphs are requested, thus it is not very relevant. It is mainly used internally by sf::Text.

    +
    Parameters
    + + +
    characterSizeReference character size
    +
    +
    +
    Returns
    Texture containing the glyphs of the requested size
    + +
    +
    + +

    ◆ getUnderlinePosition()

    + +
    +
    + + + + + + + + +
    float sf::Font::getUnderlinePosition (unsigned int characterSize) const
    +
    + +

    Get the position of the underline.

    +

    Underline position is the vertical offset to apply between the baseline and the underline.

    +
    Parameters
    + + +
    characterSizeReference character size
    +
    +
    +
    Returns
    Underline position, in pixels
    +
    See also
    getUnderlineThickness
    + +
    +
    + +

    ◆ getUnderlineThickness()

    + +
    +
    + + + + + + + + +
    float sf::Font::getUnderlineThickness (unsigned int characterSize) const
    +
    + +

    Get the thickness of the underline.

    +

    Underline thickness is the vertical size of the underline.

    +
    Parameters
    + + +
    characterSizeReference character size
    +
    +
    +
    Returns
    Underline thickness, in pixels
    +
    See also
    getUnderlinePosition
    + +
    +
    + +

    ◆ loadFromFile()

    + +
    +
    + + + + + + + + +
    bool sf::Font::loadFromFile (const std::string & filename)
    +
    + +

    Load the font from a file.

    +

    The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Note that this function knows nothing about the standard fonts installed on the user's system, thus you can't load them directly.

    +
    Warning
    SFML cannot preload all the font data in this function, so the file has to remain accessible until the sf::Font object loads a new font or is destroyed.
    +
    Parameters
    + + +
    filenamePath of the font file to load
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromMemory, loadFromStream
    + +
    +
    + +

    ◆ loadFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Font::loadFromMemory (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Load the font from a file in memory.

    +

    The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42.

    +
    Warning
    SFML cannot preload all the font data in this function, so the buffer pointed by data has to remain valid until the sf::Font object loads a new font or is destroyed.
    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeInBytesSize of the data to load, in bytes
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromStream
    + +
    +
    + +

    ◆ loadFromStream()

    + +
    +
    + + + + + + + + +
    bool sf::Font::loadFromStream (InputStreamstream)
    +
    + +

    Load the font from a custom stream.

    +

    The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Warning: SFML cannot preload all the font data in this function, so the contents of stream have to remain valid as long as the font is used.

    +
    Warning
    SFML cannot preload all the font data in this function, so the stream has to remain accessible until the sf::Font object loads a new font or is destroyed.
    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    Font& sf::Font::operator= (const Fontright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp-members.html b/SFML/doc/html/classsf_1_1Ftp-members.html new file mode 100644 index 0000000..7dbc8bf --- /dev/null +++ b/SFML/doc/html/classsf_1_1Ftp-members.html @@ -0,0 +1,85 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Ftp Member List
    +
    +
    + +

    This is the complete list of members for sf::Ftp, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Ascii enum valuesf::Ftp
    Binary enum valuesf::Ftp
    changeDirectory(const std::string &directory)sf::Ftp
    connect(const IpAddress &server, unsigned short port=21, Time timeout=Time::Zero)sf::Ftp
    createDirectory(const std::string &name)sf::Ftp
    DataChannel (defined in sf::Ftp)sf::Ftpfriend
    deleteDirectory(const std::string &name)sf::Ftp
    deleteFile(const std::string &name)sf::Ftp
    disconnect()sf::Ftp
    download(const std::string &remoteFile, const std::string &localPath, TransferMode mode=Binary)sf::Ftp
    Ebcdic enum valuesf::Ftp
    getDirectoryListing(const std::string &directory="")sf::Ftp
    getWorkingDirectory()sf::Ftp
    keepAlive()sf::Ftp
    login()sf::Ftp
    login(const std::string &name, const std::string &password)sf::Ftp
    NonCopyable()sf::NonCopyableinlineprivate
    parentDirectory()sf::Ftp
    renameFile(const std::string &file, const std::string &newName)sf::Ftp
    sendCommand(const std::string &command, const std::string &parameter="")sf::Ftp
    TransferMode enum namesf::Ftp
    upload(const std::string &localFile, const std::string &remotePath, TransferMode mode=Binary, bool append=false)sf::Ftp
    ~Ftp()sf::Ftp
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp.html b/SFML/doc/html/classsf_1_1Ftp.html new file mode 100644 index 0000000..0a062c4 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Ftp.html @@ -0,0 +1,745 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    A FTP client. + More...

    + +

    #include <Ftp.hpp>

    +
    +Inheritance diagram for sf::Ftp:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + + + + +

    +Classes

    class  DirectoryResponse
     Specialization of FTP response returning a directory. More...
     
    class  ListingResponse
     Specialization of FTP response returning a filename listing. More...
     
    class  Response
     Define a FTP response. More...
     
    + + + + +

    +Public Types

    enum  TransferMode { Binary, +Ascii, +Ebcdic + }
     Enumeration of transfer modes. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ~Ftp ()
     Destructor. More...
     
    Response connect (const IpAddress &server, unsigned short port=21, Time timeout=Time::Zero)
     Connect to the specified FTP server. More...
     
    Response disconnect ()
     Close the connection with the server. More...
     
    Response login ()
     Log in using an anonymous account. More...
     
    Response login (const std::string &name, const std::string &password)
     Log in using a username and a password. More...
     
    Response keepAlive ()
     Send a null command to keep the connection alive. More...
     
    DirectoryResponse getWorkingDirectory ()
     Get the current working directory. More...
     
    ListingResponse getDirectoryListing (const std::string &directory="")
     Get the contents of the given directory. More...
     
    Response changeDirectory (const std::string &directory)
     Change the current working directory. More...
     
    Response parentDirectory ()
     Go to the parent directory of the current one. More...
     
    Response createDirectory (const std::string &name)
     Create a new directory. More...
     
    Response deleteDirectory (const std::string &name)
     Remove an existing directory. More...
     
    Response renameFile (const std::string &file, const std::string &newName)
     Rename an existing file. More...
     
    Response deleteFile (const std::string &name)
     Remove an existing file. More...
     
    Response download (const std::string &remoteFile, const std::string &localPath, TransferMode mode=Binary)
     Download a file from the server. More...
     
    Response upload (const std::string &localFile, const std::string &remotePath, TransferMode mode=Binary, bool append=false)
     Upload a file to the server. More...
     
    Response sendCommand (const std::string &command, const std::string &parameter="")
     Send a command to the FTP server. More...
     
    + + + +

    +Friends

    +class DataChannel
     
    +

    Detailed Description

    +

    A FTP client.

    +

    sf::Ftp is a very simple FTP client that allows you to communicate with a FTP server.

    +

    The FTP protocol allows you to manipulate a remote file system (list files, upload, download, create, remove, ...).

    +

    Using the FTP client consists of 4 parts:

      +
    • Connecting to the FTP server
    • +
    • Logging in (either as a registered user or anonymously)
    • +
    • Sending commands to the server
    • +
    • Disconnecting (this part can be done implicitly by the destructor)
    • +
    +

    Every command returns a FTP response, which contains the status code as well as a message from the server. Some commands such as getWorkingDirectory() and getDirectoryListing() return additional data, and use a class derived from sf::Ftp::Response to provide this data. The most often used commands are directly provided as member functions, but it is also possible to use specific commands with the sendCommand() function.

    +

    Note that response statuses >= 1000 are not part of the FTP standard, they are generated by SFML when an internal error occurs.

    +

    All commands, especially upload and download, may take some time to complete. This is important to know if you don't want to block your application while the server is completing the task.

    +

    Usage example:

    // Create a new FTP client
    sf::Ftp ftp;
    // Connect to the server
    sf::Ftp::Response response = ftp.connect("ftp://ftp.myserver.com");
    if (response.isOk())
    std::cout << "Connected" << std::endl;
    // Log in
    response = ftp.login("laurent", "dF6Zm89D");
    if (response.isOk())
    std::cout << "Logged in" << std::endl;
    // Print the working directory
    if (directory.isOk())
    std::cout << "Working directory: " << directory.getDirectory() << std::endl;
    // Create a new directory
    response = ftp.createDirectory("files");
    if (response.isOk())
    std::cout << "Created new directory" << std::endl;
    // Upload a file to this new directory
    response = ftp.upload("local-path/file.txt", "files", sf::Ftp::Ascii);
    if (response.isOk())
    std::cout << "File uploaded" << std::endl;
    // Send specific commands (here: FEAT to list supported FTP features)
    response = ftp.sendCommand("FEAT");
    if (response.isOk())
    std::cout << "Feature list:\n" << response.getMessage() << std::endl;
    // Disconnect from the server (optional)
    ftp.disconnect();
    +

    Definition at line 47 of file Ftp.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ TransferMode

    + +
    +
    + + + + +
    enum sf::Ftp::TransferMode
    +
    + +

    Enumeration of transfer modes.

    + + + + +
    Enumerator
    Binary 

    Binary mode (file is transfered as a sequence of bytes)

    +
    Ascii 

    Text mode using ASCII encoding.

    +
    Ebcdic 

    Text mode using EBCDIC encoding.

    +
    + +

    Definition at line 55 of file Ftp.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ ~Ftp()

    + +
    +
    + + + + + + + +
    sf::Ftp::~Ftp ()
    +
    + +

    Destructor.

    +

    Automatically closes the connection with the server if it is still opened.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ changeDirectory()

    + +
    +
    + + + + + + + + +
    Response sf::Ftp::changeDirectory (const std::string & directory)
    +
    + +

    Change the current working directory.

    +

    The new directory must be relative to the current one.

    +
    Parameters
    + + +
    directoryNew working directory
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    getWorkingDirectory, getDirectoryListing, parentDirectory
    + +
    +
    + +

    ◆ connect()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::connect (const IpAddressserver,
    unsigned short port = 21,
    Time timeout = Time::Zero 
    )
    +
    + +

    Connect to the specified FTP server.

    +

    The port has a default value of 21, which is the standard port used by the FTP protocol. You shouldn't use a different value, unless you really know what you do. This function tries to connect to the server so it may take a while to complete, especially if the server is not reachable. To avoid blocking your application for too long, you can use a timeout. The default value, Time::Zero, means that the system timeout will be used (which is usually pretty long).

    +
    Parameters
    + + + + +
    serverName or address of the FTP server to connect to
    portPort used for the connection
    timeoutMaximum time to wait
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    disconnect
    + +
    +
    + +

    ◆ createDirectory()

    + +
    +
    + + + + + + + + +
    Response sf::Ftp::createDirectory (const std::string & name)
    +
    + +

    Create a new directory.

    +

    The new directory is created as a child of the current working directory.

    +
    Parameters
    + + +
    nameName of the directory to create
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    deleteDirectory
    + +
    +
    + +

    ◆ deleteDirectory()

    + +
    +
    + + + + + + + + +
    Response sf::Ftp::deleteDirectory (const std::string & name)
    +
    + +

    Remove an existing directory.

    +

    The directory to remove must be relative to the current working directory. Use this function with caution, the directory will be removed permanently!

    +
    Parameters
    + + +
    nameName of the directory to remove
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    createDirectory
    + +
    +
    + +

    ◆ deleteFile()

    + +
    +
    + + + + + + + + +
    Response sf::Ftp::deleteFile (const std::string & name)
    +
    + +

    Remove an existing file.

    +

    The file name must be relative to the current working directory. Use this function with caution, the file will be removed permanently!

    +
    Parameters
    + + +
    nameFile to remove
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    renameFile
    + +
    +
    + +

    ◆ disconnect()

    + +
    +
    + + + + + + + +
    Response sf::Ftp::disconnect ()
    +
    + +

    Close the connection with the server.

    +
    Returns
    Server response to the request
    +
    See also
    connect
    + +
    +
    + +

    ◆ download()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::download (const std::string & remoteFile,
    const std::string & localPath,
    TransferMode mode = Binary 
    )
    +
    + +

    Download a file from the server.

    +

    The filename of the distant file is relative to the current working directory of the server, and the local destination path is relative to the current directory of your application. If a file with the same filename as the distant file already exists in the local destination path, it will be overwritten.

    +
    Parameters
    + + + + +
    remoteFileFilename of the distant file to download
    localPathThe directory in which to put the file on the local computer
    modeTransfer mode
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    upload
    + +
    +
    + +

    ◆ getDirectoryListing()

    + +
    +
    + + + + + + + + +
    ListingResponse sf::Ftp::getDirectoryListing (const std::string & directory = "")
    +
    + +

    Get the contents of the given directory.

    +

    This function retrieves the sub-directories and files contained in the given directory. It is not recursive. The directory parameter is relative to the current working directory.

    +
    Parameters
    + + +
    directoryDirectory to list
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    getWorkingDirectory, changeDirectory, parentDirectory
    + +
    +
    + +

    ◆ getWorkingDirectory()

    + +
    +
    + + + + + + + +
    DirectoryResponse sf::Ftp::getWorkingDirectory ()
    +
    + +

    Get the current working directory.

    +

    The working directory is the root path for subsequent operations involving directories and/or filenames.

    +
    Returns
    Server response to the request
    +
    See also
    getDirectoryListing, changeDirectory, parentDirectory
    + +
    +
    + +

    ◆ keepAlive()

    + +
    +
    + + + + + + + +
    Response sf::Ftp::keepAlive ()
    +
    + +

    Send a null command to keep the connection alive.

    +

    This command is useful because the server may close the connection automatically if no command is sent.

    +
    Returns
    Server response to the request
    + +
    +
    + +

    ◆ login() [1/2]

    + +
    +
    + + + + + + + +
    Response sf::Ftp::login ()
    +
    + +

    Log in using an anonymous account.

    +

    Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

    +
    Returns
    Server response to the request
    + +
    +
    + +

    ◆ login() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::login (const std::string & name,
    const std::string & password 
    )
    +
    + +

    Log in using a username and a password.

    +

    Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

    +
    Parameters
    + + + +
    nameUser name
    passwordPassword
    +
    +
    +
    Returns
    Server response to the request
    + +
    +
    + +

    ◆ parentDirectory()

    + +
    +
    + + + + + + + +
    Response sf::Ftp::parentDirectory ()
    +
    + +

    Go to the parent directory of the current one.

    +
    Returns
    Server response to the request
    +
    See also
    getWorkingDirectory, getDirectoryListing, changeDirectory
    + +
    +
    + +

    ◆ renameFile()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::renameFile (const std::string & file,
    const std::string & newName 
    )
    +
    + +

    Rename an existing file.

    +

    The filenames must be relative to the current working directory.

    +
    Parameters
    + + + +
    fileFile to rename
    newNameNew name of the file
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    deleteFile
    + +
    +
    + +

    ◆ sendCommand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::sendCommand (const std::string & command,
    const std::string & parameter = "" 
    )
    +
    + +

    Send a command to the FTP server.

    +

    While the most often used commands are provided as member functions in the sf::Ftp class, this method can be used to send any FTP command to the server. If the command requires one or more parameters, they can be specified in parameter. If the server returns information, you can extract it from the response using Response::getMessage().

    +
    Parameters
    + + + +
    commandCommand to send
    parameterCommand parameter
    +
    +
    +
    Returns
    Server response to the request
    + +
    +
    + +

    ◆ upload()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Response sf::Ftp::upload (const std::string & localFile,
    const std::string & remotePath,
    TransferMode mode = Binary,
    bool append = false 
    )
    +
    + +

    Upload a file to the server.

    +

    The name of the local file is relative to the current working directory of your application, and the remote path is relative to the current directory of the FTP server.

    +

    The append parameter controls whether the remote file is appended to or overwritten if it already exists.

    +
    Parameters
    + + + + + +
    localFilePath of the local file to upload
    remotePathThe directory in which to put the file on the server
    modeTransfer mode
    appendPass true to append to or false to overwrite the remote file if it already exists
    +
    +
    +
    Returns
    Server response to the request
    +
    See also
    download
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp.png b/SFML/doc/html/classsf_1_1Ftp.png new file mode 100644 index 0000000000000000000000000000000000000000..04916fce1efcad43e65abe386190e4bad78389ea GIT binary patch literal 488 zcmVP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004ZNklC5xFqR7zwc|e1u4Irwp;JHW0sW18`8LSaa@azQPDU&&xRCRZQk_FJ0{Y|Nh{*W z^LWb+>A7e#M7hyPQd!m&ez#6# zkFE1F_g-C+1?jL(RSzX**-ur17HyXNho|^C=siigpemb^w5z*FZ$WpF-h=wTh9q6q zmy$vV!9xJ2^#X8_8|n4(Lb;I!kQ2&}1mLCbi>Sv0@E_D;0(ic9OaRYUj|t%U>M;R4 zUp=PzGBa}#2H>Dh0=TM&l7{{%`*mCm(55q_?3suFjcO#t08&Wvn(0T9%>cVgs&5PC0vvj<~(|0Cv>8ypsT~s*?b& e%9Uhh=Aj?bNEMv + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Ftp::DirectoryResponse Member List
    +
    +
    + +

    This is the complete list of members for sf::Ftp::DirectoryResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BadCommandSequence enum valuesf::Ftp::Response
    ClosingConnection enum valuesf::Ftp::Response
    ClosingDataConnection enum valuesf::Ftp::Response
    CommandNotImplemented enum valuesf::Ftp::Response
    CommandUnknown enum valuesf::Ftp::Response
    ConnectionClosed enum valuesf::Ftp::Response
    ConnectionFailed enum valuesf::Ftp::Response
    DataConnectionAlreadyOpened enum valuesf::Ftp::Response
    DataConnectionOpened enum valuesf::Ftp::Response
    DataConnectionUnavailable enum valuesf::Ftp::Response
    DirectoryOk enum valuesf::Ftp::Response
    DirectoryResponse(const Response &response)sf::Ftp::DirectoryResponse
    DirectoryStatus enum valuesf::Ftp::Response
    EnteringPassiveMode enum valuesf::Ftp::Response
    FileActionAborted enum valuesf::Ftp::Response
    FileActionOk enum valuesf::Ftp::Response
    FilenameNotAllowed enum valuesf::Ftp::Response
    FileStatus enum valuesf::Ftp::Response
    FileUnavailable enum valuesf::Ftp::Response
    getDirectory() constsf::Ftp::DirectoryResponse
    getMessage() constsf::Ftp::Response
    getStatus() constsf::Ftp::Response
    HelpMessage enum valuesf::Ftp::Response
    InsufficientStorageSpace enum valuesf::Ftp::Response
    InvalidFile enum valuesf::Ftp::Response
    InvalidResponse enum valuesf::Ftp::Response
    isOk() constsf::Ftp::Response
    LocalError enum valuesf::Ftp::Response
    LoggedIn enum valuesf::Ftp::Response
    NeedAccountToLogIn enum valuesf::Ftp::Response
    NeedAccountToStore enum valuesf::Ftp::Response
    NeedInformation enum valuesf::Ftp::Response
    NeedPassword enum valuesf::Ftp::Response
    NotEnoughMemory enum valuesf::Ftp::Response
    NotLoggedIn enum valuesf::Ftp::Response
    Ok enum valuesf::Ftp::Response
    OpeningDataConnection enum valuesf::Ftp::Response
    PageTypeUnknown enum valuesf::Ftp::Response
    ParameterNotImplemented enum valuesf::Ftp::Response
    ParametersUnknown enum valuesf::Ftp::Response
    PointlessCommand enum valuesf::Ftp::Response
    Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
    RestartMarkerReply enum valuesf::Ftp::Response
    ServiceReady enum valuesf::Ftp::Response
    ServiceReadySoon enum valuesf::Ftp::Response
    ServiceUnavailable enum valuesf::Ftp::Response
    Status enum namesf::Ftp::Response
    SystemStatus enum valuesf::Ftp::Response
    SystemType enum valuesf::Ftp::Response
    TransferAborted enum valuesf::Ftp::Response
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html b/SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html new file mode 100644 index 0000000..6eec68c --- /dev/null +++ b/SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html @@ -0,0 +1,411 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Ftp::DirectoryResponse Class Reference
    +
    +
    + +

    Specialization of FTP response returning a directory. + More...

    + +

    #include <Ftp.hpp>

    +
    +Inheritance diagram for sf::Ftp::DirectoryResponse:
    +
    +
    + + +sf::Ftp::Response + +
    + + + + + +

    +Public Types

    enum  Status {
    +  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
    +  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
    +  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
    +  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
    +  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
    +  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
    +  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
    +  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
    +  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
    +  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
    +  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
    + }
     Status codes possibly returned by a FTP response. More...
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

     DirectoryResponse (const Response &response)
     Default constructor. More...
     
    const std::string & getDirectory () const
     Get the directory returned in the response. More...
     
    bool isOk () const
     Check if the status code means a success. More...
     
    Status getStatus () const
     Get the status code of the response. More...
     
    const std::string & getMessage () const
     Get the full message contained in the response. More...
     
    +

    Detailed Description

    +

    Specialization of FTP response returning a directory.

    + +

    Definition at line 188 of file Ftp.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Ftp::Response::Status
    +
    +inherited
    +
    + +

    Status codes possibly returned by a FTP response.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    RestartMarkerReply 

    Restart marker reply.

    +
    ServiceReadySoon 

    Service ready in N minutes.

    +
    DataConnectionAlreadyOpened 

    Data connection already opened, transfer starting.

    +
    OpeningDataConnection 

    File status ok, about to open data connection.

    +
    Ok 

    Command ok.

    +
    PointlessCommand 

    Command not implemented.

    +
    SystemStatus 

    System status, or system help reply.

    +
    DirectoryStatus 

    Directory status.

    +
    FileStatus 

    File status.

    +
    HelpMessage 

    Help message.

    +
    SystemType 

    NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

    +
    ServiceReady 

    Service ready for new user.

    +
    ClosingConnection 

    Service closing control connection.

    +
    DataConnectionOpened 

    Data connection open, no transfer in progress.

    +
    ClosingDataConnection 

    Closing data connection, requested file action successful.

    +
    EnteringPassiveMode 

    Entering passive mode.

    +
    LoggedIn 

    User logged in, proceed. Logged out if appropriate.

    +
    FileActionOk 

    Requested file action ok.

    +
    DirectoryOk 

    PATHNAME created.

    +
    NeedPassword 

    User name ok, need password.

    +
    NeedAccountToLogIn 

    Need account for login.

    +
    NeedInformation 

    Requested file action pending further information.

    +
    ServiceUnavailable 

    Service not available, closing control connection.

    +
    DataConnectionUnavailable 

    Can't open data connection.

    +
    TransferAborted 

    Connection closed, transfer aborted.

    +
    FileActionAborted 

    Requested file action not taken.

    +
    LocalError 

    Requested action aborted, local error in processing.

    +
    InsufficientStorageSpace 

    Requested action not taken; insufficient storage space in system, file unavailable.

    +
    CommandUnknown 

    Syntax error, command unrecognized.

    +
    ParametersUnknown 

    Syntax error in parameters or arguments.

    +
    CommandNotImplemented 

    Command not implemented.

    +
    BadCommandSequence 

    Bad sequence of commands.

    +
    ParameterNotImplemented 

    Command not implemented for that parameter.

    +
    NotLoggedIn 

    Not logged in.

    +
    NeedAccountToStore 

    Need account for storing files.

    +
    FileUnavailable 

    Requested action not taken, file unavailable.

    +
    PageTypeUnknown 

    Requested action aborted, page type unknown.

    +
    NotEnoughMemory 

    Requested file action aborted, exceeded storage allocation.

    +
    FilenameNotAllowed 

    Requested action not taken, file name not allowed.

    +
    InvalidResponse 

    Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

    +
    ConnectionFailed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

    +
    ConnectionClosed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

    +
    InvalidFile 

    Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

    +
    + +

    Definition at line 74 of file Ftp.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ DirectoryResponse()

    + +
    +
    + + + + + + + + +
    sf::Ftp::DirectoryResponse::DirectoryResponse (const Responseresponse)
    +
    + +

    Default constructor.

    +
    Parameters
    + + +
    responseSource response
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getDirectory()

    + +
    +
    + + + + + + + +
    const std::string& sf::Ftp::DirectoryResponse::getDirectory () const
    +
    + +

    Get the directory returned in the response.

    +
    Returns
    Directory name
    + +
    +
    + +

    ◆ getMessage()

    + +
    +
    + + + + + +
    + + + + + + + +
    const std::string& sf::Ftp::Response::getMessage () const
    +
    +inherited
    +
    + +

    Get the full message contained in the response.

    +
    Returns
    The response message
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    Status sf::Ftp::Response::getStatus () const
    +
    +inherited
    +
    + +

    Get the status code of the response.

    +
    Returns
    Status code
    + +
    +
    + +

    ◆ isOk()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Ftp::Response::isOk () const
    +
    +inherited
    +
    + +

    Check if the status code means a success.

    +

    This function is defined for convenience, it is equivalent to testing if the status code is < 400.

    +
    Returns
    True if the status is a success, false if it is a failure
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png b/SFML/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png new file mode 100644 index 0000000000000000000000000000000000000000..0f475fa8b97ac6a7956c6e572d505243169c9fb8 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^3xGI)gBeJ!Z0=(NQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^ab-?+L5}PMS63SVQp&UwA8eX9+&nMIe2b5!Kiw2QQ-lBb?3fq{x@~Xb_*R( z{VWLs-P%U4Q@8*9vwFz!U|(!zaZw}Q3bpT8{ZS-Ras&C^_p!DdtC5&P=r z6%#&Pt5WM<_uu%TM8eER71v&wZuhi+7E#{Q>9O?{4R!PD8Z3#uH}Co#;H5jdd4 z&a&YIBO_2bLpN^jum23r9EoXy49})AGetaUU=X|7kbU*Z(Y=-ok==*aKI~x+cs+~d zgK=oX%co4NpURlOH~cMc;Vihn?#tYb#W5~7pUdyvvGwXzSS!#R6SsH^y7^w@6Pf~XYl&8#w+4K|ynKD27f{b85z^tyGkZbF{N z^S!$R&o|sZmyo#2w=h&CTy%co=4ylWJErV;w8-b~a; + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Ftp::ListingResponse Member List
    +
    +
    + +

    This is the complete list of members for sf::Ftp::ListingResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BadCommandSequence enum valuesf::Ftp::Response
    ClosingConnection enum valuesf::Ftp::Response
    ClosingDataConnection enum valuesf::Ftp::Response
    CommandNotImplemented enum valuesf::Ftp::Response
    CommandUnknown enum valuesf::Ftp::Response
    ConnectionClosed enum valuesf::Ftp::Response
    ConnectionFailed enum valuesf::Ftp::Response
    DataConnectionAlreadyOpened enum valuesf::Ftp::Response
    DataConnectionOpened enum valuesf::Ftp::Response
    DataConnectionUnavailable enum valuesf::Ftp::Response
    DirectoryOk enum valuesf::Ftp::Response
    DirectoryStatus enum valuesf::Ftp::Response
    EnteringPassiveMode enum valuesf::Ftp::Response
    FileActionAborted enum valuesf::Ftp::Response
    FileActionOk enum valuesf::Ftp::Response
    FilenameNotAllowed enum valuesf::Ftp::Response
    FileStatus enum valuesf::Ftp::Response
    FileUnavailable enum valuesf::Ftp::Response
    getListing() constsf::Ftp::ListingResponse
    getMessage() constsf::Ftp::Response
    getStatus() constsf::Ftp::Response
    HelpMessage enum valuesf::Ftp::Response
    InsufficientStorageSpace enum valuesf::Ftp::Response
    InvalidFile enum valuesf::Ftp::Response
    InvalidResponse enum valuesf::Ftp::Response
    isOk() constsf::Ftp::Response
    ListingResponse(const Response &response, const std::string &data)sf::Ftp::ListingResponse
    LocalError enum valuesf::Ftp::Response
    LoggedIn enum valuesf::Ftp::Response
    NeedAccountToLogIn enum valuesf::Ftp::Response
    NeedAccountToStore enum valuesf::Ftp::Response
    NeedInformation enum valuesf::Ftp::Response
    NeedPassword enum valuesf::Ftp::Response
    NotEnoughMemory enum valuesf::Ftp::Response
    NotLoggedIn enum valuesf::Ftp::Response
    Ok enum valuesf::Ftp::Response
    OpeningDataConnection enum valuesf::Ftp::Response
    PageTypeUnknown enum valuesf::Ftp::Response
    ParameterNotImplemented enum valuesf::Ftp::Response
    ParametersUnknown enum valuesf::Ftp::Response
    PointlessCommand enum valuesf::Ftp::Response
    Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
    RestartMarkerReply enum valuesf::Ftp::Response
    ServiceReady enum valuesf::Ftp::Response
    ServiceReadySoon enum valuesf::Ftp::Response
    ServiceUnavailable enum valuesf::Ftp::Response
    Status enum namesf::Ftp::Response
    SystemStatus enum valuesf::Ftp::Response
    SystemType enum valuesf::Ftp::Response
    TransferAborted enum valuesf::Ftp::Response
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.html b/SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.html new file mode 100644 index 0000000..c68030c --- /dev/null +++ b/SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.html @@ -0,0 +1,422 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Ftp::ListingResponse Class Reference
    +
    +
    + +

    Specialization of FTP response returning a filename listing. + More...

    + +

    #include <Ftp.hpp>

    +
    +Inheritance diagram for sf::Ftp::ListingResponse:
    +
    +
    + + +sf::Ftp::Response + +
    + + + + + +

    +Public Types

    enum  Status {
    +  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
    +  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
    +  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
    +  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
    +  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
    +  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
    +  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
    +  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
    +  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
    +  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
    +  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
    + }
     Status codes possibly returned by a FTP response. More...
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ListingResponse (const Response &response, const std::string &data)
     Default constructor. More...
     
    const std::vector< std::string > & getListing () const
     Return the array of directory/file names. More...
     
    bool isOk () const
     Check if the status code means a success. More...
     
    Status getStatus () const
     Get the status code of the response. More...
     
    const std::string & getMessage () const
     Get the full message contained in the response. More...
     
    +

    Detailed Description

    +

    Specialization of FTP response returning a filename listing.

    + +

    Definition at line 221 of file Ftp.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Ftp::Response::Status
    +
    +inherited
    +
    + +

    Status codes possibly returned by a FTP response.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    RestartMarkerReply 

    Restart marker reply.

    +
    ServiceReadySoon 

    Service ready in N minutes.

    +
    DataConnectionAlreadyOpened 

    Data connection already opened, transfer starting.

    +
    OpeningDataConnection 

    File status ok, about to open data connection.

    +
    Ok 

    Command ok.

    +
    PointlessCommand 

    Command not implemented.

    +
    SystemStatus 

    System status, or system help reply.

    +
    DirectoryStatus 

    Directory status.

    +
    FileStatus 

    File status.

    +
    HelpMessage 

    Help message.

    +
    SystemType 

    NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

    +
    ServiceReady 

    Service ready for new user.

    +
    ClosingConnection 

    Service closing control connection.

    +
    DataConnectionOpened 

    Data connection open, no transfer in progress.

    +
    ClosingDataConnection 

    Closing data connection, requested file action successful.

    +
    EnteringPassiveMode 

    Entering passive mode.

    +
    LoggedIn 

    User logged in, proceed. Logged out if appropriate.

    +
    FileActionOk 

    Requested file action ok.

    +
    DirectoryOk 

    PATHNAME created.

    +
    NeedPassword 

    User name ok, need password.

    +
    NeedAccountToLogIn 

    Need account for login.

    +
    NeedInformation 

    Requested file action pending further information.

    +
    ServiceUnavailable 

    Service not available, closing control connection.

    +
    DataConnectionUnavailable 

    Can't open data connection.

    +
    TransferAborted 

    Connection closed, transfer aborted.

    +
    FileActionAborted 

    Requested file action not taken.

    +
    LocalError 

    Requested action aborted, local error in processing.

    +
    InsufficientStorageSpace 

    Requested action not taken; insufficient storage space in system, file unavailable.

    +
    CommandUnknown 

    Syntax error, command unrecognized.

    +
    ParametersUnknown 

    Syntax error in parameters or arguments.

    +
    CommandNotImplemented 

    Command not implemented.

    +
    BadCommandSequence 

    Bad sequence of commands.

    +
    ParameterNotImplemented 

    Command not implemented for that parameter.

    +
    NotLoggedIn 

    Not logged in.

    +
    NeedAccountToStore 

    Need account for storing files.

    +
    FileUnavailable 

    Requested action not taken, file unavailable.

    +
    PageTypeUnknown 

    Requested action aborted, page type unknown.

    +
    NotEnoughMemory 

    Requested file action aborted, exceeded storage allocation.

    +
    FilenameNotAllowed 

    Requested action not taken, file name not allowed.

    +
    InvalidResponse 

    Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

    +
    ConnectionFailed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

    +
    ConnectionClosed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

    +
    InvalidFile 

    Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

    +
    + +

    Definition at line 74 of file Ftp.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ ListingResponse()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::Ftp::ListingResponse::ListingResponse (const Responseresponse,
    const std::string & data 
    )
    +
    + +

    Default constructor.

    +
    Parameters
    + + + +
    responseSource response
    dataData containing the raw listing
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getListing()

    + +
    +
    + + + + + + + +
    const std::vector<std::string>& sf::Ftp::ListingResponse::getListing () const
    +
    + +

    Return the array of directory/file names.

    +
    Returns
    Array containing the requested listing
    + +
    +
    + +

    ◆ getMessage()

    + +
    +
    + + + + + +
    + + + + + + + +
    const std::string& sf::Ftp::Response::getMessage () const
    +
    +inherited
    +
    + +

    Get the full message contained in the response.

    +
    Returns
    The response message
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    Status sf::Ftp::Response::getStatus () const
    +
    +inherited
    +
    + +

    Get the status code of the response.

    +
    Returns
    Status code
    + +
    +
    + +

    ◆ isOk()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Ftp::Response::isOk () const
    +
    +inherited
    +
    + +

    Check if the status code means a success.

    +

    This function is defined for convenience, it is equivalent to testing if the status code is < 400.

    +
    Returns
    True if the status is a success, false if it is a failure
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.png b/SFML/doc/html/classsf_1_1Ftp_1_1ListingResponse.png new file mode 100644 index 0000000000000000000000000000000000000000..f8294550d71d479017d833dd6b4e0b05d540f913 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^{XiVR!3-qDuU?A=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;rJ@5MAiN~|n_jz856t}T7soeSa zorM3S-1PKPp1*n*O#P+T+xq`fJzH@!uXnMgr`2n{xW|7oE39|-@z@B>Nm?{*u_r6vJOp-O8<5lItR`htb~(QvKPlN8I|e{pX!2reJ$t>yvL5>Bw%(*#1AWcBZM@SJnqF($zbk*KIphUU_R0gU@eqn{N)Rv%cBN nHSAvs_58J9t))|zU6gM*E_X`Jl + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Ftp::Response Member List
    +
    +
    + +

    This is the complete list of members for sf::Ftp::Response, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BadCommandSequence enum valuesf::Ftp::Response
    ClosingConnection enum valuesf::Ftp::Response
    ClosingDataConnection enum valuesf::Ftp::Response
    CommandNotImplemented enum valuesf::Ftp::Response
    CommandUnknown enum valuesf::Ftp::Response
    ConnectionClosed enum valuesf::Ftp::Response
    ConnectionFailed enum valuesf::Ftp::Response
    DataConnectionAlreadyOpened enum valuesf::Ftp::Response
    DataConnectionOpened enum valuesf::Ftp::Response
    DataConnectionUnavailable enum valuesf::Ftp::Response
    DirectoryOk enum valuesf::Ftp::Response
    DirectoryStatus enum valuesf::Ftp::Response
    EnteringPassiveMode enum valuesf::Ftp::Response
    FileActionAborted enum valuesf::Ftp::Response
    FileActionOk enum valuesf::Ftp::Response
    FilenameNotAllowed enum valuesf::Ftp::Response
    FileStatus enum valuesf::Ftp::Response
    FileUnavailable enum valuesf::Ftp::Response
    getMessage() constsf::Ftp::Response
    getStatus() constsf::Ftp::Response
    HelpMessage enum valuesf::Ftp::Response
    InsufficientStorageSpace enum valuesf::Ftp::Response
    InvalidFile enum valuesf::Ftp::Response
    InvalidResponse enum valuesf::Ftp::Response
    isOk() constsf::Ftp::Response
    LocalError enum valuesf::Ftp::Response
    LoggedIn enum valuesf::Ftp::Response
    NeedAccountToLogIn enum valuesf::Ftp::Response
    NeedAccountToStore enum valuesf::Ftp::Response
    NeedInformation enum valuesf::Ftp::Response
    NeedPassword enum valuesf::Ftp::Response
    NotEnoughMemory enum valuesf::Ftp::Response
    NotLoggedIn enum valuesf::Ftp::Response
    Ok enum valuesf::Ftp::Response
    OpeningDataConnection enum valuesf::Ftp::Response
    PageTypeUnknown enum valuesf::Ftp::Response
    ParameterNotImplemented enum valuesf::Ftp::Response
    ParametersUnknown enum valuesf::Ftp::Response
    PointlessCommand enum valuesf::Ftp::Response
    Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
    RestartMarkerReply enum valuesf::Ftp::Response
    ServiceReady enum valuesf::Ftp::Response
    ServiceReadySoon enum valuesf::Ftp::Response
    ServiceUnavailable enum valuesf::Ftp::Response
    Status enum namesf::Ftp::Response
    SystemStatus enum valuesf::Ftp::Response
    SystemType enum valuesf::Ftp::Response
    TransferAborted enum valuesf::Ftp::Response
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1Response.html b/SFML/doc/html/classsf_1_1Ftp_1_1Response.html new file mode 100644 index 0000000..26eff82 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Ftp_1_1Response.html @@ -0,0 +1,377 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Ftp::Response Class Reference
    +
    +
    + +

    Define a FTP response. + More...

    + +

    #include <Ftp.hpp>

    +
    +Inheritance diagram for sf::Ftp::Response:
    +
    +
    + + +sf::Ftp::DirectoryResponse +sf::Ftp::ListingResponse + +
    + + + + + +

    +Public Types

    enum  Status {
    +  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
    +  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
    +  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
    +  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
    +  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
    +  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
    +  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
    +  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
    +  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
    +  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
    +  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
    + }
     Status codes possibly returned by a FTP response. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

     Response (Status code=InvalidResponse, const std::string &message="")
     Default constructor. More...
     
    bool isOk () const
     Check if the status code means a success. More...
     
    Status getStatus () const
     Get the status code of the response. More...
     
    const std::string & getMessage () const
     Get the full message contained in the response. More...
     
    +

    Detailed Description

    +

    Define a FTP response.

    + +

    Definition at line 66 of file Ftp.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + +
    enum sf::Ftp::Response::Status
    +
    + +

    Status codes possibly returned by a FTP response.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    RestartMarkerReply 

    Restart marker reply.

    +
    ServiceReadySoon 

    Service ready in N minutes.

    +
    DataConnectionAlreadyOpened 

    Data connection already opened, transfer starting.

    +
    OpeningDataConnection 

    File status ok, about to open data connection.

    +
    Ok 

    Command ok.

    +
    PointlessCommand 

    Command not implemented.

    +
    SystemStatus 

    System status, or system help reply.

    +
    DirectoryStatus 

    Directory status.

    +
    FileStatus 

    File status.

    +
    HelpMessage 

    Help message.

    +
    SystemType 

    NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

    +
    ServiceReady 

    Service ready for new user.

    +
    ClosingConnection 

    Service closing control connection.

    +
    DataConnectionOpened 

    Data connection open, no transfer in progress.

    +
    ClosingDataConnection 

    Closing data connection, requested file action successful.

    +
    EnteringPassiveMode 

    Entering passive mode.

    +
    LoggedIn 

    User logged in, proceed. Logged out if appropriate.

    +
    FileActionOk 

    Requested file action ok.

    +
    DirectoryOk 

    PATHNAME created.

    +
    NeedPassword 

    User name ok, need password.

    +
    NeedAccountToLogIn 

    Need account for login.

    +
    NeedInformation 

    Requested file action pending further information.

    +
    ServiceUnavailable 

    Service not available, closing control connection.

    +
    DataConnectionUnavailable 

    Can't open data connection.

    +
    TransferAborted 

    Connection closed, transfer aborted.

    +
    FileActionAborted 

    Requested file action not taken.

    +
    LocalError 

    Requested action aborted, local error in processing.

    +
    InsufficientStorageSpace 

    Requested action not taken; insufficient storage space in system, file unavailable.

    +
    CommandUnknown 

    Syntax error, command unrecognized.

    +
    ParametersUnknown 

    Syntax error in parameters or arguments.

    +
    CommandNotImplemented 

    Command not implemented.

    +
    BadCommandSequence 

    Bad sequence of commands.

    +
    ParameterNotImplemented 

    Command not implemented for that parameter.

    +
    NotLoggedIn 

    Not logged in.

    +
    NeedAccountToStore 

    Need account for storing files.

    +
    FileUnavailable 

    Requested action not taken, file unavailable.

    +
    PageTypeUnknown 

    Requested action aborted, page type unknown.

    +
    NotEnoughMemory 

    Requested file action aborted, exceeded storage allocation.

    +
    FilenameNotAllowed 

    Requested action not taken, file name not allowed.

    +
    InvalidResponse 

    Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

    +
    ConnectionFailed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

    +
    ConnectionClosed 

    Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

    +
    InvalidFile 

    Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

    +
    + +

    Definition at line 74 of file Ftp.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Response()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    sf::Ftp::Response::Response (Status code = InvalidResponse,
    const std::string & message = "" 
    )
    +
    +explicit
    +
    + +

    Default constructor.

    +

    This constructor is used by the FTP client to build the response.

    +
    Parameters
    + + + +
    codeResponse status code
    messageResponse message
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getMessage()

    + +
    +
    + + + + + + + +
    const std::string& sf::Ftp::Response::getMessage () const
    +
    + +

    Get the full message contained in the response.

    +
    Returns
    The response message
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + + + +
    Status sf::Ftp::Response::getStatus () const
    +
    + +

    Get the status code of the response.

    +
    Returns
    Status code
    + +
    +
    + +

    ◆ isOk()

    + +
    +
    + + + + + + + +
    bool sf::Ftp::Response::isOk () const
    +
    + +

    Check if the status code means a success.

    +

    This function is defined for convenience, it is equivalent to testing if the status code is < 400.

    +
    Returns
    True if the status is a success, false if it is a failure
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Ftp_1_1Response.png b/SFML/doc/html/classsf_1_1Ftp_1_1Response.png new file mode 100644 index 0000000000000000000000000000000000000000..d56a74ef58442c614498b407ced3a28995a3f677 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjA12~w0q{rDabwElYz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opf_`$VSF;!#3}u?}K#S3*U@C*!oxrCt z-pda~`Tgl81#k^>x~*qbGKqN|HGsWp1lIUF&k+w9Q7Ze?4WGes+JuF3CNv@WV#kzIK;H>7e^~s5f$zZb z9bOFFzwX5{NdSGQQ!%4tI>Y?OT8upf6B*QiQo=E+4V>$Q4zQpZ0t$*h%TDck|GS%^ zAZ^{|Mm*~97-P_H(juVq(wXDn1a4O;m6v;#XsN#3v%|~N=wPVVB+hj~lYoIfDaC2! zrq|DAKi_}+|D;RVIdNq@cPDL0n5W`-{6^?b`9i_S)D!BA>sI!hKFjFkwVt=vy6HZ5 zsefwn5o^Udfdtp5uUn6W8}B{se){oxo{E~y=l5k^+MqlsG){PO?1x?RkMaF2O!}m| z?d=L1k&i!qthBGam(Hjc%J=%{{CRsG8)jenmYHFu8o&5W3{ThTFnJ@k4eLHd9C`{z9{9&AFwbHo^O&6(;}5T>s#$p!&(kC)wGo>)9iG3p`f^-ab3&%8_4Bwxya2 z$4ttS>8{BAa`67&+^N#V{tGuvTlqX>r|DOj-J2$@j1STD{NKAh#Oo3;NvNJ=3D@)l orU_`=@K052DM%6mlm8g+-*EmcG-uBTV8&zcboFyt=akR{0B1+X$N&HU literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1GlResource-members.html b/SFML/doc/html/classsf_1_1GlResource-members.html new file mode 100644 index 0000000..3cc67be --- /dev/null +++ b/SFML/doc/html/classsf_1_1GlResource-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::GlResource Member List
    +
    +
    + +

    This is the complete list of members for sf::GlResource, including all inherited members.

    + + + + +
    GlResource()sf::GlResourceprotected
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprotectedstatic
    ~GlResource()sf::GlResourceprotected
    + + + + diff --git a/SFML/doc/html/classsf_1_1GlResource.html b/SFML/doc/html/classsf_1_1GlResource.html new file mode 100644 index 0000000..c7e53ad --- /dev/null +++ b/SFML/doc/html/classsf_1_1GlResource.html @@ -0,0 +1,214 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Base class for classes that require an OpenGL context. + More...

    + +

    #include <GlResource.hpp>

    +
    +Inheritance diagram for sf::GlResource:
    +
    +
    + + +sf::Context +sf::Shader +sf::Texture +sf::VertexBuffer +sf::Window +sf::RenderWindow + +
    + + + + + +

    +Classes

    class  TransientContextLock
     RAII helper class to temporarily lock an available context for use. More...
     
    + + + + + + + +

    +Protected Member Functions

     GlResource ()
     Default constructor. More...
     
     ~GlResource ()
     Destructor. More...
     
    + + + + +

    +Static Protected Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    +

    Detailed Description

    +

    Base class for classes that require an OpenGL context.

    +

    This class is for internal use only, it must be the base of every class that requires a valid OpenGL context in order to work.

    + +

    Definition at line 46 of file GlResource.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ GlResource()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::GlResource::GlResource ()
    +
    +protected
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~GlResource()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::GlResource::~GlResource ()
    +
    +protected
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ registerContextDestroyCallback()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void sf::GlResource::registerContextDestroyCallback (ContextDestroyCallback callback,
    void * arg 
    )
    +
    +staticprotected
    +
    + +

    Register a function to be called when a context is destroyed.

    +

    This is used for internal purposes in order to properly clean up OpenGL resources that cannot be shared between contexts.

    +
    Parameters
    + + + +
    callbackFunction to be called when a context is destroyed
    argArgument to pass when calling the function
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1GlResource.png b/SFML/doc/html/classsf_1_1GlResource.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc40fe75bfc0c617ed6d6af81935cb5966536e9 GIT binary patch literal 1764 zcmb_ddo5mHcK(4W(k6S+DSuXPKT_uX3W5F)DQY zF!C6$F^F(7<&nk=5t2;JBjzE?F#DVKoc*V>r~PB^Irn?N_ulXKd++yqzu(VIJ%skq zTw|~Xfk0?_dG7T^AQW*he?wIXrXQ^+&Pd zrKZ^_PB{MtE<$%6OVeL=lpZ2DT?t8r=eA|bhe>(snMiLC*J?aoSH_H0c(Y!=U3wGN0D1mt=;DuMrqmdGOD&bK62l`Nsd=rB1uJ@9{WiRx zO2x4lR;@vL`BzEIu%*c^%8UAOmc>zR*d#By>#8#=h+0K3IEThuD@L`KHje3=liqmb zfJtl9b8XGD(S!X%#cY+3Ne(juJ}pR3nRD=K&z@SS_LJEv3X4&VCoHZjDk$=Vs}vNY ze}KIfG}GNJRr~M3yGd%`YjL`6YSc|o%XmPRNfE0zAe z?Sj`cYI|*%QeQ7~j@T-T&@XVZwu;_&rr+&_~Ic)G}zT zDF^`cf-4m0=PWh=NaBOA0MjD(KomRQ`!c|6slz&wc}4<*#pDGD!X@j*r%BhvW=lG( zjn(&zt#C!?#}ZLuK5sh%b<7g^u1DDG{7kxzmba9I3=_!QXa<#);U2@(qb(4mlEn8v z8^@yX!&~AC$Y<#E4`ZDasHt-ktp)5n;WWY*#W~?-C16eSo?E0TOL5$#4EKZ#`+%3hBU{8~LMd2^4?ObRp(fEmY|F5zfB*R&c?bDj zRrzORk$v9jK1}Rm!lN)t2O$X2hN&&gXc3pQqKpOjq6S<7DU$TI7#i{e_`-A?gB$?i zub-VIBwXORBI^jtCV{f0A!hM=c^tK(ySjM>I)Y%9ph8zPx*;8GDTC(!^a>fRBHVdf zePZ-n`Z(AHl%K5yh*2}6*5R@1ll%3x>IjmhPXtz73I?c%V^iqtanq(9F#w>B)S~YX z3d;m?-%C!ukUELYFovObCdPUjP->asGodeI&632G5I&Peiqsbd*EW7PuC|cfyKooh zqsAT54gZRqY7CBnW(wW81jhn!OThkPlztbd4Nm_0k#%QmA| z6GG}_T@(oFl@_8ffW-9vKWX+Q!>XSG!0Poh2nsm(UlI~cV8MxeYuB^29actOZdx!^ zRaSk>Fjmzr{0WAi=$Sq;M@1oChi2ju`)2xPfOa7YUT!8fz$GhRy!frU{$GXKLa&|L zSTNZK-x=j{Nyo}hUUI}5?XNF#fM${VVPYA6uMWI;O57v7w;b4Qv0GD}7QDqN6I5vo z#R4{!Y!&m6TJA$%n`wMCm%uw;f&cVLG||n0Kt8TsYzaO&)-YnzGk~OS8RWF*PD|`4 zzvCj%!L%IG+*J7CoI2x&L?1Pp#Cp+yHsM%Hs-hCY(tN0S+g_Ciz)*L5AI)DWII`8J%6Op0(>%j o*Won4LFr%L8y>d!N{(B+3+|hd}ZYPO<0j~^ppa1{> literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock-members.html b/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock-members.html new file mode 100644 index 0000000..2cc7702 --- /dev/null +++ b/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::GlResource::TransientContextLock Member List
    +
    + + + + + diff --git a/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html b/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html new file mode 100644 index 0000000..d676d9f --- /dev/null +++ b/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html @@ -0,0 +1,131 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::GlResource::TransientContextLock Class Reference
    +
    +
    + +

    RAII helper class to temporarily lock an available context for use. + More...

    + +

    #include <GlResource.hpp>

    +
    +Inheritance diagram for sf::GlResource::TransientContextLock:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + +

    +Public Member Functions

     TransientContextLock ()
     Default constructor. More...
     
     ~TransientContextLock ()
     Destructor. More...
     
    +

    Detailed Description

    +

    RAII helper class to temporarily lock an available context for use.

    + +

    Definition at line 79 of file GlResource.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ TransientContextLock()

    + +
    +
    + + + + + + + +
    sf::GlResource::TransientContextLock::TransientContextLock ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~TransientContextLock()

    + +
    +
    + + + + + + + +
    sf::GlResource::TransientContextLock::~TransientContextLock ()
    +
    + +

    Destructor.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png b/SFML/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png new file mode 100644 index 0000000000000000000000000000000000000000..90eea333b23b919b422444980ac827cd947f9b28 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;~dua#$3@b!zW8|KgO_k79mdA`cr zjM?>Dd?wAim|CK_Ky)F`hlGeAtGWsA`jT@vy$iah9sF4(-y!$w;j3H6-MlaD)LXE7 z^HGiI%5(MOGaXHi@n668i+AD@^Ag^<+n2GdyR>tC$>aWuqMh5*pKmV7cGR1h!8ZSe zLp$|L(Zs{pDJrciknEzGQ-Z(Cjzq))gOf-^*84GyDrMZ^*l9 zdiU)$S@TfFVYbvg#w{x!%96m?|4pw&V3#Q4f?!^&1~bza47Wo3 z%(qM4_L(l49nD%1Tm7DC#i|)mY^%OMQT~2{p-7Tt|ACk_`JU%1Za)^!zf<<5tH>-b4z5VCkPWDY&ci)@W*_wa;oLS{l^~UN={gO{J-zwjl-Sk~C_i>?P(a9fE zFYb)|Jje7<&57B0&zV!)4d2v!F=l*|c>Qg>;4Qrm%a--t@;;vH<2U`C+4858|Eh(2 zTj@6aechJ5ON#d%PET_Sw<}(JCZO2rzA(>StH72QZRcNZ;+VJW^eU6(+G*$auD%jm zcsj9aZuRu(?w;XieeO5=7}~Dby=J#edYbNysI;)S7t``CA1@7mct$(>wI_eov%gBL zA=$BZ#@o$*v6R2Rm%ZS{>B#dj_hgK>UOILz1Q;+^7BFW7H}fs + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Glyph Member List
    +
    +
    + +

    This is the complete list of members for sf::Glyph, including all inherited members.

    + + + + + +
    advancesf::Glyph
    boundssf::Glyph
    Glyph()sf::Glyphinline
    textureRectsf::Glyph
    + + + + diff --git a/SFML/doc/html/classsf_1_1Glyph.html b/SFML/doc/html/classsf_1_1Glyph.html new file mode 100644 index 0000000..d9593bf --- /dev/null +++ b/SFML/doc/html/classsf_1_1Glyph.html @@ -0,0 +1,185 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Structure describing a glyph. + More...

    + +

    #include <Glyph.hpp>

    + + + + + +

    +Public Member Functions

     Glyph ()
     Default constructor. More...
     
    + + + + + + + + + + +

    +Public Attributes

    float advance
     Offset to move horizontally to the next character. More...
     
    FloatRect bounds
     Bounding rectangle of the glyph, in coordinates relative to the baseline. More...
     
    IntRect textureRect
     Texture coordinates of the glyph inside the font's texture. More...
     
    +

    Detailed Description

    +

    Structure describing a glyph.

    +

    A glyph is the visual representation of a character.

    +

    The sf::Glyph structure provides the information needed to handle the glyph:

      +
    • its coordinates in the font's texture
    • +
    • its bounding rectangle
    • +
    • the offset to apply to get the starting position of the next glyph
    • +
    +
    See also
    sf::Font
    + +

    Definition at line 41 of file Glyph.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Glyph()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::Glyph::Glyph ()
    +
    +inline
    +
    + +

    Default constructor.

    + +

    Definition at line 49 of file Glyph.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ advance

    + +
    +
    + + + + +
    float sf::Glyph::advance
    +
    + +

    Offset to move horizontally to the next character.

    + +

    Definition at line 54 of file Glyph.hpp.

    + +
    +
    + +

    ◆ bounds

    + +
    +
    + + + + +
    FloatRect sf::Glyph::bounds
    +
    + +

    Bounding rectangle of the glyph, in coordinates relative to the baseline.

    + +

    Definition at line 55 of file Glyph.hpp.

    + +
    +
    + +

    ◆ textureRect

    + +
    +
    + + + + +
    IntRect sf::Glyph::textureRect
    +
    + +

    Texture coordinates of the glyph inside the font's texture.

    + +

    Definition at line 56 of file Glyph.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Http-members.html b/SFML/doc/html/classsf_1_1Http-members.html new file mode 100644 index 0000000..9b995cb --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Http Member List
    +
    +
    + +

    This is the complete list of members for sf::Http, including all inherited members.

    + + + + + + + +
    Http()sf::Http
    Http(const std::string &host, unsigned short port=0)sf::Http
    NonCopyable()sf::NonCopyableinlineprivate
    sendRequest(const Request &request, Time timeout=Time::Zero)sf::Http
    setHost(const std::string &host, unsigned short port=0)sf::Http
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Http.html b/SFML/doc/html/classsf_1_1Http.html new file mode 100644 index 0000000..52b93ff --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http.html @@ -0,0 +1,263 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Http Class Reference
    +
    +
    + +

    A HTTP client. + More...

    + +

    #include <Http.hpp>

    +
    +Inheritance diagram for sf::Http:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + +

    +Classes

    class  Request
     Define a HTTP request. More...
     
    class  Response
     Define a HTTP response. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

     Http ()
     Default constructor. More...
     
     Http (const std::string &host, unsigned short port=0)
     Construct the HTTP client with the target host. More...
     
    void setHost (const std::string &host, unsigned short port=0)
     Set the target host. More...
     
    Response sendRequest (const Request &request, Time timeout=Time::Zero)
     Send a HTTP request and return the server's response. More...
     
    +

    Detailed Description

    +

    A HTTP client.

    +

    sf::Http is a very simple HTTP client that allows you to communicate with a web server.

    +

    You can retrieve web pages, send data to an interactive resource, download a remote file, etc. The HTTPS protocol is not supported.

    +

    The HTTP client is split into 3 classes:

    +

    sf::Http::Request builds the request that will be sent to the server. A request is made of:

      +
    • a method (what you want to do)
    • +
    • a target URI (usually the name of the web page or file)
    • +
    • one or more header fields (options that you can pass to the server)
    • +
    • an optional body (for POST requests)
    • +
    +

    sf::Http::Response parse the response from the web server and provides getters to read them. The response contains:

      +
    • a status code
    • +
    • header fields (that may be answers to the ones that you requested)
    • +
    • a body, which contains the contents of the requested resource
    • +
    +

    sf::Http provides a simple function, SendRequest, to send a sf::Http::Request and return the corresponding sf::Http::Response from the server.

    +

    Usage example:

    // Create a new HTTP client
    sf::Http http;
    // We'll work on http://www.sfml-dev.org
    http.setHost("http://www.sfml-dev.org");
    // Prepare a request to get the 'features.php' page
    sf::Http::Request request("features.php");
    // Send the request
    sf::Http::Response response = http.sendRequest(request);
    // Check the status code and display the result
    if (status == sf::Http::Response::Ok)
    {
    std::cout << response.getBody() << std::endl;
    }
    else
    {
    std::cout << "Error " << status << std::endl;
    }
    +

    Definition at line 46 of file Http.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Http() [1/2]

    + +
    +
    + + + + + + + +
    sf::Http::Http ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ Http() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::Http::Http (const std::string & host,
    unsigned short port = 0 
    )
    +
    + +

    Construct the HTTP client with the target host.

    +

    This is equivalent to calling setHost(host, port). The port has a default value of 0, which means that the HTTP client will use the right port according to the protocol used (80 for HTTP). You should leave it like this unless you really need a port other than the standard one, or use an unknown protocol.

    +
    Parameters
    + + + +
    hostWeb server to connect to
    portPort to use for connection
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ sendRequest()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Response sf::Http::sendRequest (const Requestrequest,
    Time timeout = Time::Zero 
    )
    +
    + +

    Send a HTTP request and return the server's response.

    +

    You must have a valid host before sending a request (see setHost). Any missing mandatory header field in the request 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, or use a timeout to limit the time to wait. A value of Time::Zero means that the client will use the system default timeout (which is usually pretty long).

    +
    Parameters
    + + + +
    requestRequest to send
    timeoutMaximum time to wait
    +
    +
    +
    Returns
    Server's response
    + +
    +
    + +

    ◆ setHost()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Http::setHost (const std::string & host,
    unsigned short port = 0 
    )
    +
    + +

    Set the target host.

    +

    This function just stores the host address and port, it doesn't actually connect to it until you send a request. The port has a default value of 0, which means that the HTTP client will use the right port according to the protocol used (80 for HTTP). You should leave it like this unless you really need a port other than the standard one, or use an unknown protocol.

    +
    Parameters
    + + + +
    hostWeb server to connect to
    portPort to use for connection
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Http.png b/SFML/doc/html/classsf_1_1Http.png new file mode 100644 index 0000000000000000000000000000000000000000..6f251bf903c1077b22f6358c20cb381ca2106064 GIT binary patch literal 489 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004aNkl^Tkp9sEh&!=q@g1xR>-SV9ZuAnfs^gh;pM}lFG8K@SAli zdu*MbrT6NRG^B2wsvb(rvY)C1HEovcr>FSq^qwRgP?b$d+SFO3kD#+ipF!haLy`{b zOGzPw;30rt>jB^*H`3$bg>oZJASaX`3BXI=7tx3b;6G@@1aN$85clNgHbS9~({dJ_a%dV?a&R*LQvF%RmJ%EmOZZJpyM>R+Q fN99T~GxN|7D7h7_*Fj<<00000NkvXXu0mjfNzL5L literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Http_1_1Request-members.html b/SFML/doc/html/classsf_1_1Http_1_1Request-members.html new file mode 100644 index 0000000..08989d3 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http_1_1Request-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Http::Request Member List
    +
    +
    + +

    This is the complete list of members for sf::Http::Request, including all inherited members.

    + + + + + + + + + + + + + + +
    Delete enum valuesf::Http::Request
    Get enum valuesf::Http::Request
    Head enum valuesf::Http::Request
    Http (defined in sf::Http::Request)sf::Http::Requestfriend
    Method enum namesf::Http::Request
    Post enum valuesf::Http::Request
    Put enum valuesf::Http::Request
    Request(const std::string &uri="/", Method method=Get, const std::string &body="")sf::Http::Request
    setBody(const std::string &body)sf::Http::Request
    setField(const std::string &field, const std::string &value)sf::Http::Request
    setHttpVersion(unsigned int major, unsigned int minor)sf::Http::Request
    setMethod(Method method)sf::Http::Request
    setUri(const std::string &uri)sf::Http::Request
    + + + + diff --git a/SFML/doc/html/classsf_1_1Http_1_1Request.html b/SFML/doc/html/classsf_1_1Http_1_1Request.html new file mode 100644 index 0000000..f6cdcf5 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http_1_1Request.html @@ -0,0 +1,352 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Http::Request Class Reference
    +
    +
    + +

    Define a HTTP request. + More...

    + +

    #include <Http.hpp>

    + + + + + +

    +Public Types

    enum  Method {
    +  Get, +Post, +Head, +Put, +
    +  Delete +
    + }
     Enumerate the available HTTP methods for a request. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Request (const std::string &uri="/", Method method=Get, const std::string &body="")
     Default constructor. More...
     
    void setField (const std::string &field, const std::string &value)
     Set the value of a field. More...
     
    void setMethod (Method method)
     Set the request method. More...
     
    void setUri (const std::string &uri)
     Set the requested URI. More...
     
    void setHttpVersion (unsigned int major, unsigned int minor)
     Set the HTTP version for the request. More...
     
    void setBody (const std::string &body)
     Set the body of the request. More...
     
    + + + +

    +Friends

    +class Http
     
    +

    Detailed Description

    +

    Define a HTTP request.

    + +

    Definition at line 54 of file Http.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Method

    + +
    +
    + + + + +
    enum sf::Http::Request::Method
    +
    + +

    Enumerate the available HTTP methods for a request.

    + + + + + + +
    Enumerator
    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.

    +
    Put 

    Request in put mode, useful for a REST API.

    +
    Delete 

    Request in delete mode, useful for a REST API.

    +
    + +

    Definition at line 62 of file Http.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Request()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Http::Request::Request (const std::string & uri = "/",
    Method method = Get,
    const std::string & body = "" 
    )
    +
    + +

    Default constructor.

    +

    This constructor creates a GET request, with the root URI ("/") and an empty body.

    +
    Parameters
    + + + + +
    uriTarget URI
    methodMethod to use for the request
    bodyContent of the request's body
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ setBody()

    + +
    +
    + + + + + + + + +
    void sf::Http::Request::setBody (const std::string & body)
    +
    + +

    Set the body of the request.

    +

    The body of a request is optional and only makes sense for POST requests. It is ignored for all other methods. The body is empty by default.

    +
    Parameters
    + + +
    bodyContent of the body
    +
    +
    + +
    +
    + +

    ◆ setField()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Http::Request::setField (const std::string & field,
    const std::string & value 
    )
    +
    + +

    Set the value of a field.

    +

    The field is created if it doesn't exist. The name of the field is case-insensitive. By default, a request doesn't contain any field (but the mandatory fields are added later by the HTTP client when sending the request).

    +
    Parameters
    + + + +
    fieldName of the field to set
    valueValue of the field
    +
    +
    + +
    +
    + +

    ◆ setHttpVersion()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Http::Request::setHttpVersion (unsigned int major,
    unsigned int minor 
    )
    +
    + +

    Set the HTTP version for the request.

    +

    The HTTP version is 1.0 by default.

    +
    Parameters
    + + + +
    majorMajor HTTP version number
    minorMinor HTTP version number
    +
    +
    + +
    +
    + +

    ◆ setMethod()

    + +
    +
    + + + + + + + + +
    void sf::Http::Request::setMethod (Method method)
    +
    + +

    Set the request method.

    +

    See the Method enumeration for a complete list of all the availale methods. The method is Http::Request::Get by default.

    +
    Parameters
    + + +
    methodMethod to use for the request
    +
    +
    + +
    +
    + +

    ◆ setUri()

    + +
    +
    + + + + + + + + +
    void sf::Http::Request::setUri (const std::string & uri)
    +
    + +

    Set the requested URI.

    +

    The URI is the resource (usually a web page or a file) that you want to get or post. The URI is "/" (the root page) by default.

    +
    Parameters
    + + +
    uriURI to request, relative to the host
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Http_1_1Response-members.html b/SFML/doc/html/classsf_1_1Http_1_1Response-members.html new file mode 100644 index 0000000..167dcf6 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http_1_1Response-members.html @@ -0,0 +1,92 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Http::Response Member List
    +
    + + + + + diff --git a/SFML/doc/html/classsf_1_1Http_1_1Response.html b/SFML/doc/html/classsf_1_1Http_1_1Response.html new file mode 100644 index 0000000..69a1bb7 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Http_1_1Response.html @@ -0,0 +1,345 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Http::Response Class Reference
    +
    +
    + +

    Define a HTTP response. + More...

    + +

    #include <Http.hpp>

    + + + + + +

    +Public Types

    enum  Status {
    +  Ok = 200, +Created = 201, +Accepted = 202, +NoContent = 204, +
    +  ResetContent = 205, +PartialContent = 206, +MultipleChoices = 300, +MovedPermanently = 301, +
    +  MovedTemporarily = 302, +NotModified = 304, +BadRequest = 400, +Unauthorized = 401, +
    +  Forbidden = 403, +NotFound = 404, +RangeNotSatisfiable = 407, +InternalServerError = 500, +
    +  NotImplemented = 501, +BadGateway = 502, +ServiceNotAvailable = 503, +GatewayTimeout = 504, +
    +  VersionNotSupported = 505, +InvalidResponse = 1000, +ConnectionFailed = 1001 +
    + }
     Enumerate all the valid status codes for a response. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Response ()
     Default constructor. More...
     
    const std::string & getField (const std::string &field) const
     Get the value of a field. More...
     
    Status getStatus () const
     Get the response status code. More...
     
    unsigned int getMajorHttpVersion () const
     Get the major HTTP version number of the response. More...
     
    unsigned int getMinorHttpVersion () const
     Get the minor HTTP version number of the response. More...
     
    const std::string & getBody () const
     Get the body of the response. More...
     
    + + + +

    +Friends

    +class Http
     
    +

    Detailed Description

    +

    Define a HTTP response.

    + +

    Definition at line 193 of file Http.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + +
    enum sf::Http::Response::Status
    +
    + +

    Enumerate all the valid status codes for a response.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Ok 

    Most common code returned when operation was successful.

    +
    Created 

    The resource has successfully been created.

    +
    Accepted 

    The request has been accepted, but will be processed later by the server.

    +
    NoContent 

    The server didn't send any data in return.

    +
    ResetContent 

    The server informs the client that it should clear the view (form) that caused the request to be sent.

    +
    PartialContent 

    The server has sent a part of the resource, as a response to a partial GET request.

    +
    MultipleChoices 

    The requested page can be accessed from several locations.

    +
    MovedPermanently 

    The requested page has permanently moved to a new location.

    +
    MovedTemporarily 

    The requested page has temporarily moved to a new location.

    +
    NotModified 

    For conditional requests, means the requested page hasn't changed and doesn't need to be refreshed.

    +
    BadRequest 

    The server couldn't understand the request (syntax error)

    +
    Unauthorized 

    The requested page needs an authentication to be accessed.

    +
    Forbidden 

    The requested page cannot be accessed at all, even with authentication.

    +
    NotFound 

    The requested page doesn't exist.

    +
    RangeNotSatisfiable 

    The server can't satisfy the partial GET request (with a "Range" header field)

    +
    InternalServerError 

    The server encountered an unexpected error.

    +
    NotImplemented 

    The server doesn't implement a requested feature.

    +
    BadGateway 

    The gateway server has received an error from the source server.

    +
    ServiceNotAvailable 

    The server is temporarily unavailable (overloaded, in maintenance, ...)

    +
    GatewayTimeout 

    The gateway server couldn't receive a response from the source server.

    +
    VersionNotSupported 

    The server doesn't support the requested HTTP version.

    +
    InvalidResponse 

    Response is not a valid HTTP one.

    +
    ConnectionFailed 

    Connection with server failed.

    +
    + +

    Definition at line 201 of file Http.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Response()

    + +
    +
    + + + + + + + +
    sf::Http::Response::Response ()
    +
    + +

    Default constructor.

    +

    Constructs an empty response.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getBody()

    + +
    +
    + + + + + + + +
    const std::string& sf::Http::Response::getBody () const
    +
    + +

    Get the body of the response.

    +

    The body of a response may 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
    + +
    +
    + +

    ◆ getField()

    + +
    +
    + + + + + + + + +
    const std::string& sf::Http::Response::getField (const std::string & field) const
    +
    + +

    Get the value of a field.

    +

    If the field field is not found in the response header, the empty string is returned. This function uses case-insensitive comparisons.

    +
    Parameters
    + + +
    fieldName of the field to get
    +
    +
    +
    Returns
    Value of the field, or empty string if not found
    + +
    +
    + +

    ◆ getMajorHttpVersion()

    + +
    +
    + + + + + + + +
    unsigned int sf::Http::Response::getMajorHttpVersion () const
    +
    + +

    Get the major HTTP version number of the response.

    +
    Returns
    Major HTTP version number
    +
    See also
    getMinorHttpVersion
    + +
    +
    + +

    ◆ getMinorHttpVersion()

    + +
    +
    + + + + + + + +
    unsigned int sf::Http::Response::getMinorHttpVersion () const
    +
    + +

    Get the minor HTTP version number of the response.

    +
    Returns
    Minor HTTP version number
    +
    See also
    getMajorHttpVersion
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + + + +
    Status sf::Http::Response::getStatus () const
    +
    + +

    Get the response status code.

    +

    The status code should be the first thing to be checked after receiving a response, it defines whether it is a success, a failure or anything else (see the Status enumeration).

    +
    Returns
    Status code of the response
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Image-members.html b/SFML/doc/html/classsf_1_1Image-members.html new file mode 100644 index 0000000..3bb2d59 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Image-members.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Image Member List
    +
    +
    + +

    This is the complete list of members for sf::Image, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    copy(const Image &source, unsigned int destX, unsigned int destY, const IntRect &sourceRect=IntRect(0, 0, 0, 0), bool applyAlpha=false)sf::Image
    create(unsigned int width, unsigned int height, const Color &color=Color(0, 0, 0))sf::Image
    create(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Image
    createMaskFromColor(const Color &color, Uint8 alpha=0)sf::Image
    flipHorizontally()sf::Image
    flipVertically()sf::Image
    getPixel(unsigned int x, unsigned int y) constsf::Image
    getPixelsPtr() constsf::Image
    getSize() constsf::Image
    Image()sf::Image
    loadFromFile(const std::string &filename)sf::Image
    loadFromMemory(const void *data, std::size_t size)sf::Image
    loadFromStream(InputStream &stream)sf::Image
    saveToFile(const std::string &filename) constsf::Image
    setPixel(unsigned int x, unsigned int y, const Color &color)sf::Image
    ~Image()sf::Image
    + + + + diff --git a/SFML/doc/html/classsf_1_1Image.html b/SFML/doc/html/classsf_1_1Image.html new file mode 100644 index 0000000..6f8601a --- /dev/null +++ b/SFML/doc/html/classsf_1_1Image.html @@ -0,0 +1,650 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Image Class Reference
    +
    +
    + +

    Class for loading, manipulating and saving images. + More...

    + +

    #include <Image.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Image ()
     Default constructor. More...
     
     ~Image ()
     Destructor. More...
     
    void create (unsigned int width, unsigned int height, const Color &color=Color(0, 0, 0))
     Create the image and fill it with a unique color. More...
     
    void create (unsigned int width, unsigned int height, const Uint8 *pixels)
     Create the image from an array of pixels. More...
     
    bool loadFromFile (const std::string &filename)
     Load the image from a file on disk. More...
     
    bool loadFromMemory (const void *data, std::size_t size)
     Load the image from a file in memory. More...
     
    bool loadFromStream (InputStream &stream)
     Load the image from a custom stream. More...
     
    bool saveToFile (const std::string &filename) const
     Save the image to a file on disk. More...
     
    Vector2u getSize () const
     Return the size (width and height) of the image. More...
     
    void createMaskFromColor (const Color &color, Uint8 alpha=0)
     Create a transparency mask from a specified color-key. More...
     
    void copy (const Image &source, unsigned int destX, unsigned int destY, const IntRect &sourceRect=IntRect(0, 0, 0, 0), bool applyAlpha=false)
     Copy pixels from another image onto this one. More...
     
    void setPixel (unsigned int x, unsigned int y, const Color &color)
     Change the color of a pixel. More...
     
    Color getPixel (unsigned int x, unsigned int y) const
     Get the color of a pixel. More...
     
    const Uint8 * getPixelsPtr () const
     Get a read-only pointer to the array of pixels. More...
     
    void flipHorizontally ()
     Flip the image horizontally (left <-> right) More...
     
    void flipVertically ()
     Flip the image vertically (top <-> bottom) More...
     
    +

    Detailed Description

    +

    Class for loading, manipulating and saving images.

    +

    sf::Image is an abstraction to manipulate images as bidimensional arrays of pixels.

    +

    The class provides functions to load, read, write and save pixels, as well as many other useful functions.

    +

    sf::Image can handle a unique internal representation of pixels, which is RGBA 32 bits. This means that a pixel must be composed of 8 bits red, green, blue and alpha channels – just like a sf::Color. All the functions that return an array of pixels follow this rule, and all parameters that you pass to sf::Image functions (such as loadFromMemory) must use this representation as well.

    +

    A sf::Image can be copied, but it is a heavy resource and if possible you should always use [const] references to pass or return them to avoid useless copies.

    +

    Usage example:

    // Load an image file from a file
    sf::Image background;
    if (!background.loadFromFile("background.jpg"))
    return -1;
    // Create a 20x20 image filled with black color
    sf::Image image;
    image.create(20, 20, sf::Color::Black);
    // Copy image1 on image2 at position (10, 10)
    image.copy(background, 10, 10);
    // Make the top-left pixel transparent
    sf::Color color = image.getPixel(0, 0);
    color.a = 0;
    image.setPixel(0, 0, color);
    // Save the image to a file
    if (!image.saveToFile("result.png"))
    return -1;
    See also
    sf::Texture
    + +

    Definition at line 46 of file Image.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Image()

    + +
    +
    + + + + + + + +
    sf::Image::Image ()
    +
    + +

    Default constructor.

    +

    Creates an empty image.

    + +
    +
    + +

    ◆ ~Image()

    + +
    +
    + + + + + + + +
    sf::Image::~Image ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Image::copy (const Imagesource,
    unsigned int destX,
    unsigned int destY,
    const IntRectsourceRect = IntRect(0, 0, 0, 0),
    bool applyAlpha = false 
    )
    +
    + +

    Copy pixels from another image onto this one.

    +

    This function does a slow pixel copy and should not be used intensively. It can be used to prepare a complex static image from several others, but if you need this kind of feature in real-time you'd better use sf::RenderTexture.

    +

    If sourceRect is empty, the whole image is copied. If applyAlpha is set to true, the transparency of source pixels is applied. If it is false, the pixels are copied unchanged with their alpha value.

    +
    Parameters
    + + + + + + +
    sourceSource image to copy
    destXX coordinate of the destination position
    destYY coordinate of the destination position
    sourceRectSub-rectangle of the source image to copy
    applyAlphaShould the copy take into account the source transparency?
    +
    +
    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Image::create (unsigned int width,
    unsigned int height,
    const Colorcolor = Color(0, 0, 0) 
    )
    +
    + +

    Create the image and fill it with a unique color.

    +
    Parameters
    + + + + +
    widthWidth of the image
    heightHeight of the image
    colorFill color
    +
    +
    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Image::create (unsigned int width,
    unsigned int height,
    const Uint8 * pixels 
    )
    +
    + +

    Create the image from an array of pixels.

    +

    The pixel array is assumed to contain 32-bits RGBA pixels, and have the given width and height. If not, this is an undefined behavior. If pixels is null, an empty image is created.

    +
    Parameters
    + + + + +
    widthWidth of the image
    heightHeight of the image
    pixelsArray of pixels to copy to the image
    +
    +
    + +
    +
    + +

    ◆ createMaskFromColor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Image::createMaskFromColor (const Colorcolor,
    Uint8 alpha = 0 
    )
    +
    + +

    Create a transparency mask from a specified color-key.

    +

    This function sets the alpha value of every pixel matching the given color to alpha (0 by default), so that they become transparent.

    +
    Parameters
    + + + +
    colorColor to make transparent
    alphaAlpha value to assign to transparent pixels
    +
    +
    + +
    +
    + +

    ◆ flipHorizontally()

    + +
    +
    + + + + + + + +
    void sf::Image::flipHorizontally ()
    +
    + +

    Flip the image horizontally (left <-> right)

    + +
    +
    + +

    ◆ flipVertically()

    + +
    +
    + + + + + + + +
    void sf::Image::flipVertically ()
    +
    + +

    Flip the image vertically (top <-> bottom)

    + +
    +
    + +

    ◆ getPixel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Color sf::Image::getPixel (unsigned int x,
    unsigned int y 
    ) const
    +
    + +

    Get the color of a pixel.

    +

    This function doesn't check the validity of the pixel coordinates, using out-of-range values will result in an undefined behavior.

    +
    Parameters
    + + + +
    xX coordinate of pixel to get
    yY coordinate of pixel to get
    +
    +
    +
    Returns
    Color of the pixel at coordinates (x, y)
    +
    See also
    setPixel
    + +
    +
    + +

    ◆ getPixelsPtr()

    + +
    +
    + + + + + + + +
    const Uint8* sf::Image::getPixelsPtr () const
    +
    + +

    Get a read-only pointer to the array of pixels.

    +

    The returned value points to an array of RGBA pixels made of 8 bits integers components. The size of the array is width * height * 4 (getSize().x * getSize().y * 4). Warning: the returned pointer may become invalid if you modify the image, so you should never store it for too long. If the image is empty, a null pointer is returned.

    +
    Returns
    Read-only pointer to the array of pixels
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    Vector2u sf::Image::getSize () const
    +
    + +

    Return the size (width and height) of the image.

    +
    Returns
    Size of the image, in pixels
    + +
    +
    + +

    ◆ loadFromFile()

    + +
    +
    + + + + + + + + +
    bool sf::Image::loadFromFile (const std::string & filename)
    +
    + +

    Load the image from a file on disk.

    +

    The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

    +
    Parameters
    + + +
    filenamePath of the image file to load
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromMemory, loadFromStream, saveToFile
    + +
    +
    + +

    ◆ loadFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Image::loadFromMemory (const void * data,
    std::size_t size 
    )
    +
    + +

    Load the image from a file in memory.

    +

    The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeSize of the data to load, in bytes
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromFile, loadFromStream
    + +
    +
    + +

    ◆ loadFromStream()

    + +
    +
    + + + + + + + + +
    bool sf::Image::loadFromStream (InputStreamstream)
    +
    + +

    Load the image from a custom stream.

    +

    The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ saveToFile()

    + +
    +
    + + + + + + + + +
    bool sf::Image::saveToFile (const std::string & filename) const
    +
    + +

    Save the image to a file on disk.

    +

    The format of the image is automatically deduced from the extension. The supported image formats are bmp, png, tga and jpg. The destination file is overwritten if it already exists. This function fails if the image is empty.

    +
    Parameters
    + + +
    filenamePath of the file to save
    +
    +
    +
    Returns
    True if saving was successful
    +
    See also
    create, loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ setPixel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Image::setPixel (unsigned int x,
    unsigned int y,
    const Colorcolor 
    )
    +
    + +

    Change the color of a pixel.

    +

    This function doesn't check the validity of the pixel coordinates, using out-of-range values will result in an undefined behavior.

    +
    Parameters
    + + + + +
    xX coordinate of pixel to change
    yY coordinate of pixel to change
    colorNew color of the pixel
    +
    +
    +
    See also
    getPixel
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1InputSoundFile-members.html b/SFML/doc/html/classsf_1_1InputSoundFile-members.html new file mode 100644 index 0000000..fc54f4a --- /dev/null +++ b/SFML/doc/html/classsf_1_1InputSoundFile-members.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::InputSoundFile Member List
    +
    +
    + +

    This is the complete list of members for sf::InputSoundFile, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    getChannelCount() constsf::InputSoundFile
    getDuration() constsf::InputSoundFile
    getSampleCount() constsf::InputSoundFile
    getSampleOffset() constsf::InputSoundFile
    getSampleRate() constsf::InputSoundFile
    getTimeOffset() constsf::InputSoundFile
    InputSoundFile()sf::InputSoundFile
    NonCopyable()sf::NonCopyableinlineprivate
    openFromFile(const std::string &filename)sf::InputSoundFile
    openFromMemory(const void *data, std::size_t sizeInBytes)sf::InputSoundFile
    openFromStream(InputStream &stream)sf::InputSoundFile
    read(Int16 *samples, Uint64 maxCount)sf::InputSoundFile
    seek(Uint64 sampleOffset)sf::InputSoundFile
    seek(Time timeOffset)sf::InputSoundFile
    ~InputSoundFile()sf::InputSoundFile
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1InputSoundFile.html b/SFML/doc/html/classsf_1_1InputSoundFile.html new file mode 100644 index 0000000..8ddbfb7 --- /dev/null +++ b/SFML/doc/html/classsf_1_1InputSoundFile.html @@ -0,0 +1,481 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::InputSoundFile Class Reference
    +
    +
    + +

    Provide read access to sound files. + More...

    + +

    #include <InputSoundFile.hpp>

    +
    +Inheritance diagram for sf::InputSoundFile:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     InputSoundFile ()
     Default constructor. More...
     
     ~InputSoundFile ()
     Destructor. More...
     
    bool openFromFile (const std::string &filename)
     Open a sound file from the disk for reading. More...
     
    bool openFromMemory (const void *data, std::size_t sizeInBytes)
     Open a sound file in memory for reading. More...
     
    bool openFromStream (InputStream &stream)
     Open a sound file from a custom stream for reading. More...
     
    Uint64 getSampleCount () const
     Get the total number of audio samples in the file. More...
     
    unsigned int getChannelCount () const
     Get the number of channels used by the sound. More...
     
    unsigned int getSampleRate () const
     Get the sample rate of the sound. More...
     
    Time getDuration () const
     Get the total duration of the sound file. More...
     
    Time getTimeOffset () const
     Get the read offset of the file in time. More...
     
    Uint64 getSampleOffset () const
     Get the read offset of the file in samples. More...
     
    void seek (Uint64 sampleOffset)
     Change the current read position to the given sample offset. More...
     
    void seek (Time timeOffset)
     Change the current read position to the given time offset. More...
     
    Uint64 read (Int16 *samples, Uint64 maxCount)
     Read audio samples from the open file. More...
     
    +

    Detailed Description

    +

    Provide read access to sound files.

    +

    This class decodes audio samples from a sound file.

    +

    It is used internally by higher-level classes such as sf::SoundBuffer and sf::Music, but can also be useful if you want to process or analyze audio files without playing them, or if you want to implement your own version of sf::Music with more specific features.

    +

    Usage example:

    // Open a sound file
    if (!file.openFromFile("music.ogg"))
    /* error */;
    // Print the sound attributes
    std::cout << "duration: " << file.getDuration().asSeconds() << std::endl;
    std::cout << "channels: " << file.getChannelCount() << std::endl;
    std::cout << "sample rate: " << file.getSampleRate() << std::endl;
    std::cout << "sample count: " << file.getSampleCount() << std::endl;
    // Read and process batches of samples until the end of file is reached
    sf::Int16 samples[1024];
    sf::Uint64 count;
    do
    {
    count = file.read(samples, 1024);
    // process, analyze, play, convert, or whatever
    // you want to do with the samples...
    }
    while (count > 0);
    See also
    sf::SoundFileReader, sf::OutputSoundFile
    + +

    Definition at line 47 of file InputSoundFile.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ InputSoundFile()

    + +
    +
    + + + + + + + +
    sf::InputSoundFile::InputSoundFile ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~InputSoundFile()

    + +
    +
    + + + + + + + +
    sf::InputSoundFile::~InputSoundFile ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + + + +
    unsigned int sf::InputSoundFile::getChannelCount () const
    +
    + +

    Get the number of channels used by the sound.

    +
    Returns
    Number of channels (1 = mono, 2 = stereo)
    + +
    +
    + +

    ◆ getDuration()

    + +
    +
    + + + + + + + +
    Time sf::InputSoundFile::getDuration () const
    +
    + +

    Get the total duration of the sound file.

    +

    This function is provided for convenience, the duration is deduced from the other sound file attributes.

    +
    Returns
    Duration of the sound file
    + +
    +
    + +

    ◆ getSampleCount()

    + +
    +
    + + + + + + + +
    Uint64 sf::InputSoundFile::getSampleCount () const
    +
    + +

    Get the total number of audio samples in the file.

    +
    Returns
    Number of samples
    + +
    +
    + +

    ◆ getSampleOffset()

    + +
    +
    + + + + + + + +
    Uint64 sf::InputSoundFile::getSampleOffset () const
    +
    + +

    Get the read offset of the file in samples.

    +
    Returns
    Sample position
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + + + +
    unsigned int sf::InputSoundFile::getSampleRate () const
    +
    + +

    Get the sample rate of the sound.

    +
    Returns
    Sample rate, in samples per second
    + +
    +
    + +

    ◆ getTimeOffset()

    + +
    +
    + + + + + + + +
    Time sf::InputSoundFile::getTimeOffset () const
    +
    + +

    Get the read offset of the file in time.

    +
    Returns
    Time position
    + +
    +
    + +

    ◆ openFromFile()

    + +
    +
    + + + + + + + + +
    bool sf::InputSoundFile::openFromFile (const std::string & filename)
    +
    + +

    Open a sound file from the disk for reading.

    +

    The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

    +
    Parameters
    + + +
    filenamePath of the sound file to load
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ openFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::InputSoundFile::openFromMemory (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Open a sound file in memory for reading.

    +

    The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeInBytesSize of the data to load, in bytes
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ openFromStream()

    + +
    +
    + + + + + + + + +
    bool sf::InputSoundFile::openFromStream (InputStreamstream)
    +
    + +

    Open a sound file from a custom stream for reading.

    +

    The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Uint64 sf::InputSoundFile::read (Int16 * samples,
    Uint64 maxCount 
    )
    +
    + +

    Read audio samples from the open file.

    +
    Parameters
    + + + +
    samplesPointer to the sample array to fill
    maxCountMaximum number of samples to read
    +
    +
    +
    Returns
    Number of samples actually read (may be less than maxCount)
    + +
    +
    + +

    ◆ seek() [1/2]

    + +
    +
    + + + + + + + + +
    void sf::InputSoundFile::seek (Uint64 sampleOffset)
    +
    + +

    Change the current read position to the given sample offset.

    +

    This function takes a sample offset to provide maximum precision. If you need to jump to a given time, use the other overload.

    +

    The sample offset takes the channels into account. If you have a time offset instead, you can easily find the corresponding sample offset with the following formula: timeInSeconds * sampleRate * channelCount If the given offset exceeds to total number of samples, this function jumps to the end of the sound file.

    +
    Parameters
    + + +
    sampleOffsetIndex of the sample to jump to, relative to the beginning
    +
    +
    + +
    +
    + +

    ◆ seek() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::InputSoundFile::seek (Time timeOffset)
    +
    + +

    Change the current read position to the given time offset.

    +

    Using a time offset is handy but imprecise. If you need an accurate result, consider using the overload which takes a sample offset.

    +

    If the given time exceeds to total duration, this function jumps to the end of the sound file.

    +
    Parameters
    + + +
    timeOffsetTime to jump to, relative to the beginning
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1InputSoundFile.png b/SFML/doc/html/classsf_1_1InputSoundFile.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d5aa9c4113ca2551ab82cb9329ee6af8158402 GIT binary patch literal 559 zcmV+~0?_@5P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0005LNklRK5BTw5zcfNN`I2ykt! z3<0jKl_9{coO5obZ~*hPfB-}Fb>QZrv;ffSJ|D~m@I>2UbYvI;E}@@NxPKlZf9&*9QE6_z_z5#hPGC9 zYI~2^=jXt(#~I-9dY@sjnKez->w}$=Y2E + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::InputStream Member List
    +
    +
    + +

    This is the complete list of members for sf::InputStream, including all inherited members.

    + + + + + + +
    getSize()=0sf::InputStreampure virtual
    read(void *data, Int64 size)=0sf::InputStreampure virtual
    seek(Int64 position)=0sf::InputStreampure virtual
    tell()=0sf::InputStreampure virtual
    ~InputStream()sf::InputStreaminlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1InputStream.html b/SFML/doc/html/classsf_1_1InputStream.html new file mode 100644 index 0000000..115edc4 --- /dev/null +++ b/SFML/doc/html/classsf_1_1InputStream.html @@ -0,0 +1,281 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::InputStream Class Referenceabstract
    +
    +
    + +

    Abstract class for custom file input streams. + More...

    + +

    #include <InputStream.hpp>

    +
    +Inheritance diagram for sf::InputStream:
    +
    +
    + + +sf::FileInputStream +sf::MemoryInputStream + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~InputStream ()
     Virtual destructor. More...
     
    virtual Int64 read (void *data, Int64 size)=0
     Read data from the stream. More...
     
    virtual Int64 seek (Int64 position)=0
     Change the current reading position. More...
     
    virtual Int64 tell ()=0
     Get the current reading position in the stream. More...
     
    virtual Int64 getSize ()=0
     Return the size of the stream. More...
     
    +

    Detailed Description

    +

    Abstract class for custom file input streams.

    +

    This class allows users to define their own file input sources from which SFML can load resources.

    +

    SFML resource classes like sf::Texture and sf::SoundBuffer provide loadFromFile and loadFromMemory functions, which read data from conventional sources. However, if you have data coming from a different source (over a network, embedded, encrypted, compressed, etc) you can derive your own class from sf::InputStream and load SFML resources with their loadFromStream function.

    +

    Usage example:

    // custom stream class that reads from inside a zip file
    class ZipStream : public sf::InputStream
    {
    public:
    ZipStream(std::string archive);
    bool open(std::string filename);
    Int64 read(void* data, Int64 size);
    Int64 seek(Int64 position);
    Int64 tell();
    Int64 getSize();
    private:
    ...
    };
    // now you can load textures...
    sf::Texture texture;
    ZipStream stream("resources.zip");
    stream.open("images/img.png");
    texture.loadFromStream(stream);
    // musics...
    sf::Music music;
    ZipStream stream("resources.zip");
    stream.open("musics/msc.ogg");
    music.openFromStream(stream);
    // etc.
    +

    Definition at line 41 of file InputStream.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~InputStream()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::InputStream::~InputStream ()
    +
    +inlinevirtual
    +
    + +

    Virtual destructor.

    + +

    Definition at line 49 of file InputStream.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::InputStream::getSize ()
    +
    +pure virtual
    +
    + +

    Return the size of the stream.

    +
    Returns
    The total number of bytes available in the stream, or -1 on error
    + +

    Implemented in sf::FileInputStream, and sf::MemoryInputStream.

    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual Int64 sf::InputStream::read (void * data,
    Int64 size 
    )
    +
    +pure virtual
    +
    + +

    Read data from the stream.

    +

    After reading, the stream's reading position must be advanced by the amount of bytes read.

    +
    Parameters
    + + + +
    dataBuffer where to copy the read data
    sizeDesired number of bytes to read
    +
    +
    +
    Returns
    The number of bytes actually read, or -1 on error
    + +

    Implemented in sf::FileInputStream, and sf::MemoryInputStream.

    + +
    +
    + +

    ◆ seek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Int64 sf::InputStream::seek (Int64 position)
    +
    +pure virtual
    +
    + +

    Change the current reading position.

    +
    Parameters
    + + +
    positionThe position to seek to, from the beginning
    +
    +
    +
    Returns
    The position actually sought to, or -1 on error
    + +

    Implemented in sf::FileInputStream, and sf::MemoryInputStream.

    + +
    +
    + +

    ◆ tell()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::InputStream::tell ()
    +
    +pure virtual
    +
    + +

    Get the current reading position in the stream.

    +
    Returns
    The current position, or -1 on error.
    + +

    Implemented in sf::FileInputStream, and sf::MemoryInputStream.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1InputStream.png b/SFML/doc/html/classsf_1_1InputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..86a2283bf6c8cd27eb214385dacc0e314e8f3087 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK12~w0WY^!0UqDJCz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op#4ip)Q6PC&3194W@#fTNl0E zAZh#eP5k*K`{%!yD>^k@#`U!SPp%J!=AmEiNUXmb7_w$|>TTomx7mNTUN^p-U70U? zd-w81*Y|{pXRp>zeZ5BM^V+|uFEynYt?q;c&dxY{CAVy5ZRm*h;6PR+kbZ_$v4c>$Uce5}0U0i2TD)RP~#DNLB)uT+$7HwGTT4DPmXXQ5a zD7*7@CKnm3{xtt=QDT@5bn~a|E(Sj}5yl-*KFAMxt21UTd#S|mN5|NK!9YobvEodz z1yccsD}x-r^FxjV9}Ol81r`)7P;Ya(GUzSjIG_qN@6W15mGho+GZl!g+xZ15hGYk( z22{z@o`FlJT>5@SbLkgT@m?*@OQsvTR9;H8D0vofx=wl`)TMG#Rm5{r_wtNc+h#xC zf4nqvXYeE|o8R&M{PGi*$T_>JPHH}=IyCjf9F&z z6P-F|)#mK$@$qY1HZOb~KW(1S;w6{9b$y!{V!R>#w#XdWM;?Kj_ntkLd8Jgpa<257 z?tJa6P1Va+a2_l2>v-()ddl2AO54i#kF8&PuIp^~d(Bralm3Pzz7ds;y~ke|vTk>K z_}68|`_{I8{ge@uIVt3#?)6-i*^AE2%5T0|^d+~0eQU;&75lX1W&7`Y@_MfNkQHd! zy4dBm_AjL)%`UH}W>+t|8LT}0tSP6D?3UxMn>kgcK2wcSpMC4s4F4@}{}(&SsLoQ^ z>;0W!`V#+_YO_>o{e&-@EB;%t$ZSb~%F3+W9sjl~d0Mp!3;Ry;QvwF8x5gxu=>aO9 sdJ8=!#mIF9dA(GUaMfH|BKVKt`#$Rvv)G$v19K09r>mdKI;Vst02fh^)Bpeg literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1IpAddress-members.html b/SFML/doc/html/classsf_1_1IpAddress-members.html new file mode 100644 index 0000000..60c117c --- /dev/null +++ b/SFML/doc/html/classsf_1_1IpAddress-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::IpAddress Member List
    +
    +
    + +

    This is the complete list of members for sf::IpAddress, including all inherited members.

    + + + + + + + + + + + + + + + +
    Anysf::IpAddressstatic
    Broadcastsf::IpAddressstatic
    getLocalAddress()sf::IpAddressstatic
    getPublicAddress(Time timeout=Time::Zero)sf::IpAddressstatic
    IpAddress()sf::IpAddress
    IpAddress(const std::string &address)sf::IpAddress
    IpAddress(const char *address)sf::IpAddress
    IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3)sf::IpAddress
    IpAddress(Uint32 address)sf::IpAddressexplicit
    LocalHostsf::IpAddressstatic
    Nonesf::IpAddressstatic
    operator<(const IpAddress &left, const IpAddress &right)sf::IpAddressfriend
    toInteger() constsf::IpAddress
    toString() constsf::IpAddress
    + + + + diff --git a/SFML/doc/html/classsf_1_1IpAddress.html b/SFML/doc/html/classsf_1_1IpAddress.html new file mode 100644 index 0000000..06d1eca --- /dev/null +++ b/SFML/doc/html/classsf_1_1IpAddress.html @@ -0,0 +1,561 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Encapsulate an IPv4 network address. + More...

    + +

    #include <IpAddress.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     IpAddress ()
     Default constructor. More...
     
     IpAddress (const std::string &address)
     Construct the address from a string. More...
     
     IpAddress (const char *address)
     Construct the address from a string. More...
     
     IpAddress (Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3)
     Construct the address from 4 bytes. More...
     
     IpAddress (Uint32 address)
     Construct the address from a 32-bits integer. More...
     
    std::string toString () const
     Get a string representation of the address. More...
     
    Uint32 toInteger () const
     Get an integer representation of the address. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static IpAddress getLocalAddress ()
     Get the computer's local address. More...
     
    static IpAddress getPublicAddress (Time timeout=Time::Zero)
     Get the computer's public address. More...
     
    + + + + + + + + + + + + + +

    +Static Public Attributes

    static const IpAddress None
     Value representing an empty/invalid address. More...
     
    static const IpAddress Any
     Value representing any address (0.0.0.0) More...
     
    static const IpAddress LocalHost
     The "localhost" address (for connecting a computer to itself locally) More...
     
    static const IpAddress Broadcast
     The "broadcast" address (for sending UDP messages to everyone on a local network) More...
     
    + + + + +

    +Friends

    bool operator< (const IpAddress &left, const IpAddress &right)
     Overload of < operator to compare two IP addresses. More...
     
    +

    Detailed Description

    +

    Encapsulate an IPv4 network address.

    +

    sf::IpAddress is a utility class for manipulating network addresses.

    +

    It provides a set a implicit constructors and conversion functions to easily build or transform an IP address from/to various representations.

    +

    Usage example:

    sf::IpAddress a0; // an invalid address
    sf::IpAddress a1 = sf::IpAddress::None; // an invalid address (same as a0)
    sf::IpAddress a2("127.0.0.1"); // the local host address
    sf::IpAddress a3 = sf::IpAddress::Broadcast; // the broadcast address
    sf::IpAddress a4(192, 168, 1, 56); // a local address
    sf::IpAddress a5("my_computer"); // a local address created from a network name
    sf::IpAddress a6("89.54.1.169"); // a distant address
    sf::IpAddress a7("www.google.com"); // a distant address created from a network name
    sf::IpAddress a8 = sf::IpAddress::getLocalAddress(); // my address on the local network
    sf::IpAddress a9 = sf::IpAddress::getPublicAddress(); // my address on the internet

    Note that sf::IpAddress currently doesn't support IPv6 nor other types of network addresses.

    + +

    Definition at line 44 of file IpAddress.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ IpAddress() [1/5]

    + +
    +
    + + + + + + + +
    sf::IpAddress::IpAddress ()
    +
    + +

    Default constructor.

    +

    This constructor creates an empty (invalid) address

    + +
    +
    + +

    ◆ IpAddress() [2/5]

    + +
    +
    + + + + + + + + +
    sf::IpAddress::IpAddress (const std::string & address)
    +
    + +

    Construct the address from a string.

    +

    Here address can be either a decimal address (ex: "192.168.1.56") or a network name (ex: "localhost").

    +
    Parameters
    + + +
    addressIP address or network name
    +
    +
    + +
    +
    + +

    ◆ IpAddress() [3/5]

    + +
    +
    + + + + + + + + +
    sf::IpAddress::IpAddress (const char * address)
    +
    + +

    Construct the address from a string.

    +

    Here address can be either a decimal address (ex: "192.168.1.56") or a network name (ex: "localhost"). This is equivalent to the constructor taking a std::string parameter, it is defined for convenience so that the implicit conversions from literal strings to IpAddress work.

    +
    Parameters
    + + +
    addressIP address or network name
    +
    +
    + +
    +
    + +

    ◆ IpAddress() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::IpAddress::IpAddress (Uint8 byte0,
    Uint8 byte1,
    Uint8 byte2,
    Uint8 byte3 
    )
    +
    + +

    Construct the address from 4 bytes.

    +

    Calling IpAddress(a, b, c, d) is equivalent to calling IpAddress("a.b.c.d"), but safer as it doesn't have to parse a string to get the address components.

    +
    Parameters
    + + + + + +
    byte0First byte of the address
    byte1Second byte of the address
    byte2Third byte of the address
    byte3Fourth byte of the address
    +
    +
    + +
    +
    + +

    ◆ IpAddress() [5/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::IpAddress::IpAddress (Uint32 address)
    +
    +explicit
    +
    + +

    Construct the address from a 32-bits integer.

    +

    This constructor uses the internal representation of the address directly. It should be used for optimization purposes, and only if you got that representation from IpAddress::toInteger().

    +
    Parameters
    + + +
    address4 bytes of the address packed into a 32-bits integer
    +
    +
    +
    See also
    toInteger
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getLocalAddress()

    + +
    +
    + + + + + +
    + + + + + + + +
    static IpAddress sf::IpAddress::getLocalAddress ()
    +
    +static
    +
    + +

    Get the computer's local address.

    +

    The local address is the address of the computer from the LAN point of view, i.e. something like 192.168.1.56. It is meaningful only for communications over the local network. Unlike getPublicAddress, this function is fast and may be used safely anywhere.

    +
    Returns
    Local IP address of the computer
    +
    See also
    getPublicAddress
    + +
    +
    + +

    ◆ getPublicAddress()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static IpAddress sf::IpAddress::getPublicAddress (Time timeout = Time::Zero)
    +
    +static
    +
    + +

    Get the computer's public address.

    +

    The public address is the address of the computer from the internet point of view, i.e. something like 89.54.1.169. It is necessary for communications over the world wide web. The only way to get a public address is to ask it to a distant website; as a consequence, this function depends on both your network connection and the server, and may be very slow. You should use it as few as possible. Because this function depends on the network connection and on a distant server, you may use a time limit if you don't want your program to be possibly stuck waiting in case there is a problem; this limit is deactivated by default.

    +
    Parameters
    + + +
    timeoutMaximum time to wait
    +
    +
    +
    Returns
    Public IP address of the computer
    +
    See also
    getLocalAddress
    + +
    +
    + +

    ◆ toInteger()

    + +
    +
    + + + + + + + +
    Uint32 sf::IpAddress::toInteger () const
    +
    + +

    Get an integer representation of the address.

    +

    The returned number is the internal representation of the address, and should be used for optimization purposes only (like sending the address through a socket). The integer produced by this function can then be converted back to a sf::IpAddress with the proper constructor.

    +
    Returns
    32-bits unsigned integer representation of the address
    +
    See also
    toString
    + +
    +
    + +

    ◆ toString()

    + +
    +
    + + + + + + + +
    std::string sf::IpAddress::toString () const
    +
    + +

    Get a string representation of the address.

    +

    The returned string is the decimal representation of the IP address (like "192.168.1.56"), even if it was constructed from a host name.

    +
    Returns
    String representation of the address
    +
    See also
    toInteger
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator<

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator< (const IpAddressleft,
    const IpAddressright 
    )
    +
    +friend
    +
    + +

    Overload of < operator to compare two IP addresses.

    +
    Parameters
    + + + +
    leftLeft operand (a IP address)
    rightRight operand (a IP address)
    +
    +
    +
    Returns
    True if left is lesser than right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ Any

    + +
    +
    + + + + + +
    + + + + +
    const IpAddress sf::IpAddress::Any
    +
    +static
    +
    + +

    Value representing any address (0.0.0.0)

    + +

    Definition at line 185 of file IpAddress.hpp.

    + +
    +
    + +

    ◆ Broadcast

    + +
    +
    + + + + + +
    + + + + +
    const IpAddress sf::IpAddress::Broadcast
    +
    +static
    +
    + +

    The "broadcast" address (for sending UDP messages to everyone on a local network)

    + +

    Definition at line 187 of file IpAddress.hpp.

    + +
    +
    + +

    ◆ LocalHost

    + +
    +
    + + + + + +
    + + + + +
    const IpAddress sf::IpAddress::LocalHost
    +
    +static
    +
    + +

    The "localhost" address (for connecting a computer to itself locally)

    + +

    Definition at line 186 of file IpAddress.hpp.

    + +
    +
    + +

    ◆ None

    + +
    +
    + + + + + +
    + + + + +
    const IpAddress sf::IpAddress::None
    +
    +static
    +
    + +

    Value representing an empty/invalid address.

    + +

    Definition at line 184 of file IpAddress.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Joystick-members.html b/SFML/doc/html/classsf_1_1Joystick-members.html new file mode 100644 index 0000000..a85b0f8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Joystick-members.html @@ -0,0 +1,80 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Joystick Member List
    +
    +
    + +

    This is the complete list of members for sf::Joystick, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    Axis enum namesf::Joystick
    AxisCount enum valuesf::Joystick
    ButtonCount enum valuesf::Joystick
    Count enum valuesf::Joystick
    getAxisPosition(unsigned int joystick, Axis axis)sf::Joystickstatic
    getButtonCount(unsigned int joystick)sf::Joystickstatic
    getIdentification(unsigned int joystick)sf::Joystickstatic
    hasAxis(unsigned int joystick, Axis axis)sf::Joystickstatic
    isButtonPressed(unsigned int joystick, unsigned int button)sf::Joystickstatic
    isConnected(unsigned int joystick)sf::Joystickstatic
    PovX enum valuesf::Joystick
    PovY enum valuesf::Joystick
    R enum valuesf::Joystick
    U enum valuesf::Joystick
    update()sf::Joystickstatic
    V enum valuesf::Joystick
    X enum valuesf::Joystick
    Y enum valuesf::Joystick
    Z enum valuesf::Joystick
    + + + + diff --git a/SFML/doc/html/classsf_1_1Joystick.html b/SFML/doc/html/classsf_1_1Joystick.html new file mode 100644 index 0000000..f3e035e --- /dev/null +++ b/SFML/doc/html/classsf_1_1Joystick.html @@ -0,0 +1,478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Give access to the real-time state of the joysticks. + More...

    + +

    #include <Joystick.hpp>

    + + + + + +

    +Classes

    struct  Identification
     Structure holding a joystick's identification. More...
     
    + + + + + + + +

    +Public Types

    enum  { Count = 8, +ButtonCount = 32, +AxisCount = 8 + }
     Constants related to joysticks capabilities. More...
     
    enum  Axis {
    +  X, +Y, +Z, +R, +
    +  U, +V, +PovX, +PovY +
    + }
     Axes supported by SFML joysticks. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    static bool isConnected (unsigned int joystick)
     Check if a joystick is connected. More...
     
    static unsigned int getButtonCount (unsigned int joystick)
     Return the number of buttons supported by a joystick. More...
     
    static bool hasAxis (unsigned int joystick, Axis axis)
     Check if a joystick supports a given axis. More...
     
    static bool isButtonPressed (unsigned int joystick, unsigned int button)
     Check if a joystick button is pressed. More...
     
    static float getAxisPosition (unsigned int joystick, Axis axis)
     Get the current position of a joystick axis. More...
     
    static Identification getIdentification (unsigned int joystick)
     Get the joystick information. More...
     
    static void update ()
     Update the states of all joysticks. More...
     
    +

    Detailed Description

    +

    Give access to the real-time state of the joysticks.

    +

    sf::Joystick provides an interface to the state of the joysticks.

    +

    It only contains static functions, so it's not meant to be instantiated. Instead, each joystick is identified by an index that is passed to the functions of this class.

    +

    This class allows users to query the state of joysticks at any time and directly, without having to deal with a window and its events. Compared to the JoystickMoved, JoystickButtonPressed and JoystickButtonReleased events, sf::Joystick can retrieve the state of axes and buttons of joysticks at any time (you don't need to store and update a boolean on your side in order to know if a button is pressed or released), and you always get the real state of joysticks, even if they are moved, pressed or released when your window is out of focus and no event is triggered.

    +

    SFML supports:

    +

    Unlike the keyboard or mouse, the state of joysticks is sometimes not directly available (depending on the OS), therefore an update() function must be called in order to update the current state of joysticks. When you have a window with event handling, this is done automatically, you don't need to call anything. But if you have no window, or if you want to check joysticks state before creating one, you must call sf::Joystick::update explicitly.

    +

    Usage example:

    // Is joystick #0 connected?
    bool connected = sf::Joystick::isConnected(0);
    // How many buttons does joystick #0 support?
    unsigned int buttons = sf::Joystick::getButtonCount(0);
    // Does joystick #0 define a X axis?
    // Is button #2 pressed on joystick #0?
    bool pressed = sf::Joystick::isButtonPressed(0, 2);
    // What's the current position of the Y axis on joystick #0?
    See also
    sf::Keyboard, sf::Mouse
    + +

    Definition at line 41 of file Joystick.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + +
    anonymous enum
    +
    + +

    Constants related to joysticks capabilities.

    + + + + +
    Enumerator
    Count 

    Maximum number of supported joysticks.

    +
    ButtonCount 

    Maximum number of supported buttons.

    +
    AxisCount 

    Maximum number of supported axes.

    +
    + +

    Definition at line 49 of file Joystick.hpp.

    + +
    +
    + +

    ◆ Axis

    + +
    +
    + + + + +
    enum sf::Joystick::Axis
    +
    + +

    Axes supported by SFML joysticks.

    + + + + + + + + + +
    Enumerator

    The X axis.

    +

    The Y axis.

    +

    The Z axis.

    +

    The R axis.

    +

    The U axis.

    +

    The V axis.

    +
    PovX 

    The X axis of the point-of-view hat.

    +
    PovY 

    The Y axis of the point-of-view hat.

    +
    + +

    Definition at line 60 of file Joystick.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAxisPosition()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static float sf::Joystick::getAxisPosition (unsigned int joystick,
    Axis axis 
    )
    +
    +static
    +
    + +

    Get the current position of a joystick axis.

    +

    If the joystick is not connected, this function returns 0.

    +
    Parameters
    + + + +
    joystickIndex of the joystick
    axisAxis to check
    +
    +
    +
    Returns
    Current position of the axis, in range [-100 .. 100]
    + +
    +
    + +

    ◆ getButtonCount()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static unsigned int sf::Joystick::getButtonCount (unsigned int joystick)
    +
    +static
    +
    + +

    Return the number of buttons supported by a joystick.

    +

    If the joystick is not connected, this function returns 0.

    +
    Parameters
    + + +
    joystickIndex of the joystick
    +
    +
    +
    Returns
    Number of buttons supported by the joystick
    + +
    +
    + +

    ◆ getIdentification()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static Identification sf::Joystick::getIdentification (unsigned int joystick)
    +
    +static
    +
    + +

    Get the joystick information.

    +
    Parameters
    + + +
    joystickIndex of the joystick
    +
    +
    +
    Returns
    Structure containing joystick information.
    + +
    +
    + +

    ◆ hasAxis()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static bool sf::Joystick::hasAxis (unsigned int joystick,
    Axis axis 
    )
    +
    +static
    +
    + +

    Check if a joystick supports a given axis.

    +

    If the joystick is not connected, this function returns false.

    +
    Parameters
    + + + +
    joystickIndex of the joystick
    axisAxis to check
    +
    +
    +
    Returns
    True if the joystick supports the axis, false otherwise
    + +
    +
    + +

    ◆ isButtonPressed()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static bool sf::Joystick::isButtonPressed (unsigned int joystick,
    unsigned int button 
    )
    +
    +static
    +
    + +

    Check if a joystick button is pressed.

    +

    If the joystick is not connected, this function returns false.

    +
    Parameters
    + + + +
    joystickIndex of the joystick
    buttonButton to check
    +
    +
    +
    Returns
    True if the button is pressed, false otherwise
    + +
    +
    + +

    ◆ isConnected()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Joystick::isConnected (unsigned int joystick)
    +
    +static
    +
    + +

    Check if a joystick is connected.

    +
    Parameters
    + + +
    joystickIndex of the joystick to check
    +
    +
    +
    Returns
    True if the joystick is connected, false otherwise
    + +
    +
    + +

    ◆ update()

    + +
    +
    + + + + + +
    + + + + + + + +
    static void sf::Joystick::update ()
    +
    +static
    +
    + +

    Update the states of all joysticks.

    +

    This function is used internally by SFML, so you normally don't have to call it explicitly. However, you may need to call it if you have no window yet (or no window at all): in this case the joystick states are not updated automatically.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Keyboard-members.html b/SFML/doc/html/classsf_1_1Keyboard-members.html new file mode 100644 index 0000000..d117297 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Keyboard-members.html @@ -0,0 +1,172 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Keyboard Member List
    +
    +
    + +

    This is the complete list of members for sf::Keyboard, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    A enum valuesf::Keyboard
    Add enum valuesf::Keyboard
    B enum valuesf::Keyboard
    Backslash enum valuesf::Keyboard
    BackSlash enum valuesf::Keyboard
    BackSpace enum valuesf::Keyboard
    Backspace enum valuesf::Keyboard
    C enum valuesf::Keyboard
    Comma enum valuesf::Keyboard
    D enum valuesf::Keyboard
    Dash enum valuesf::Keyboard
    Delete enum valuesf::Keyboard
    Divide enum valuesf::Keyboard
    Down enum valuesf::Keyboard
    E enum valuesf::Keyboard
    End enum valuesf::Keyboard
    Enter enum valuesf::Keyboard
    Equal enum valuesf::Keyboard
    Escape enum valuesf::Keyboard
    F enum valuesf::Keyboard
    F1 enum valuesf::Keyboard
    F10 enum valuesf::Keyboard
    F11 enum valuesf::Keyboard
    F12 enum valuesf::Keyboard
    F13 enum valuesf::Keyboard
    F14 enum valuesf::Keyboard
    F15 enum valuesf::Keyboard
    F2 enum valuesf::Keyboard
    F3 enum valuesf::Keyboard
    F4 enum valuesf::Keyboard
    F5 enum valuesf::Keyboard
    F6 enum valuesf::Keyboard
    F7 enum valuesf::Keyboard
    F8 enum valuesf::Keyboard
    F9 enum valuesf::Keyboard
    G enum valuesf::Keyboard
    H enum valuesf::Keyboard
    Home enum valuesf::Keyboard
    Hyphen enum valuesf::Keyboard
    I enum valuesf::Keyboard
    Insert enum valuesf::Keyboard
    isKeyPressed(Key key)sf::Keyboardstatic
    J enum valuesf::Keyboard
    K enum valuesf::Keyboard
    Key enum namesf::Keyboard
    KeyCount enum valuesf::Keyboard
    L enum valuesf::Keyboard
    LAlt enum valuesf::Keyboard
    LBracket enum valuesf::Keyboard
    LControl enum valuesf::Keyboard
    Left enum valuesf::Keyboard
    LShift enum valuesf::Keyboard
    LSystem enum valuesf::Keyboard
    M enum valuesf::Keyboard
    Menu enum valuesf::Keyboard
    Multiply enum valuesf::Keyboard
    N enum valuesf::Keyboard
    Num0 enum valuesf::Keyboard
    Num1 enum valuesf::Keyboard
    Num2 enum valuesf::Keyboard
    Num3 enum valuesf::Keyboard
    Num4 enum valuesf::Keyboard
    Num5 enum valuesf::Keyboard
    Num6 enum valuesf::Keyboard
    Num7 enum valuesf::Keyboard
    Num8 enum valuesf::Keyboard
    Num9 enum valuesf::Keyboard
    Numpad0 enum valuesf::Keyboard
    Numpad1 enum valuesf::Keyboard
    Numpad2 enum valuesf::Keyboard
    Numpad3 enum valuesf::Keyboard
    Numpad4 enum valuesf::Keyboard
    Numpad5 enum valuesf::Keyboard
    Numpad6 enum valuesf::Keyboard
    Numpad7 enum valuesf::Keyboard
    Numpad8 enum valuesf::Keyboard
    Numpad9 enum valuesf::Keyboard
    O enum valuesf::Keyboard
    P enum valuesf::Keyboard
    PageDown enum valuesf::Keyboard
    PageUp enum valuesf::Keyboard
    Pause enum valuesf::Keyboard
    Period enum valuesf::Keyboard
    Q enum valuesf::Keyboard
    Quote enum valuesf::Keyboard
    R enum valuesf::Keyboard
    RAlt enum valuesf::Keyboard
    RBracket enum valuesf::Keyboard
    RControl enum valuesf::Keyboard
    Return enum valuesf::Keyboard
    Right enum valuesf::Keyboard
    RShift enum valuesf::Keyboard
    RSystem enum valuesf::Keyboard
    S enum valuesf::Keyboard
    SemiColon enum valuesf::Keyboard
    Semicolon enum valuesf::Keyboard
    setVirtualKeyboardVisible(bool visible)sf::Keyboardstatic
    Slash enum valuesf::Keyboard
    Space enum valuesf::Keyboard
    Subtract enum valuesf::Keyboard
    T enum valuesf::Keyboard
    Tab enum valuesf::Keyboard
    Tilde enum valuesf::Keyboard
    U enum valuesf::Keyboard
    Unknown enum valuesf::Keyboard
    Up enum valuesf::Keyboard
    V enum valuesf::Keyboard
    W enum valuesf::Keyboard
    X enum valuesf::Keyboard
    Y enum valuesf::Keyboard
    Z enum valuesf::Keyboard
    + + + + diff --git a/SFML/doc/html/classsf_1_1Keyboard.html b/SFML/doc/html/classsf_1_1Keyboard.html new file mode 100644 index 0000000..8d69d16 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Keyboard.html @@ -0,0 +1,539 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Give access to the real-time state of the keyboard. + More...

    + +

    #include <Keyboard.hpp>

    + + + + + +

    +Public Types

    enum  Key {
    +  Unknown = -1, +A = 0, +B, +C, +
    +  D, +E, +F, +G, +
    +  H, +I, +J, +K, +
    +  L, +M, +N, +O, +
    +  P, +Q, +R, +S, +
    +  T, +U, +V, +W, +
    +  X, +Y, +Z, +Num0, +
    +  Num1, +Num2, +Num3, +Num4, +
    +  Num5, +Num6, +Num7, +Num8, +
    +  Num9, +Escape, +LControl, +LShift, +
    +  LAlt, +LSystem, +RControl, +RShift, +
    +  RAlt, +RSystem, +Menu, +LBracket, +
    +  RBracket, +Semicolon, +Comma, +Period, +
    +  Quote, +Slash, +Backslash, +Tilde, +
    +  Equal, +Hyphen, +Space, +Enter, +
    +  Backspace, +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, +KeyCount, +Dash = Hyphen, +
    +  BackSpace = Backspace, +BackSlash = Backslash, +SemiColon = Semicolon, +Return = Enter +
    + }
     Key codes. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static bool isKeyPressed (Key key)
     Check if a key is pressed. More...
     
    static void setVirtualKeyboardVisible (bool visible)
     Show or hide the virtual keyboard. More...
     
    +

    Detailed Description

    +

    Give access to the real-time state of the keyboard.

    +

    sf::Keyboard provides an interface to the state of the keyboard.

    +

    It only contains static functions (a single keyboard is assumed), so it's not meant to be instantiated.

    +

    This class allows users to query the keyboard state at any time and directly, without having to deal with a window and its events. Compared to the KeyPressed and KeyReleased events, sf::Keyboard can retrieve the state of a key at any time (you don't need to store and update a boolean on your side in order to know if a key is pressed or released), and you always get the real state of the keyboard, even if keys are pressed or released when your window is out of focus and no event is triggered.

    +

    Usage example:

    See also
    sf::Joystick, sf::Mouse, sf::Touch
    + +

    Definition at line 40 of file Keyboard.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Key

    + +
    +
    + + + + +
    enum sf::Keyboard::Key
    +
    + +

    Key codes.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Unknown 

    Unhandled key.

    +

    The A key.

    +

    The B key.

    +

    The C key.

    +

    The D key.

    +

    The E key.

    +

    The F key.

    +

    The G key.

    +

    The H key.

    +

    The I key.

    +

    The J key.

    +

    The K key.

    +

    The L key.

    +

    The M key.

    +

    The N key.

    +

    The O key.

    +

    The P key.

    +

    The Q key.

    +

    The R key.

    +

    The S key.

    +

    The T key.

    +

    The U key.

    +

    The V key.

    +

    The W key.

    +

    The X key.

    +

    The Y key.

    +

    The Z key.

    +
    Num0 

    The 0 key.

    +
    Num1 

    The 1 key.

    +
    Num2 

    The 2 key.

    +
    Num3 

    The 3 key.

    +
    Num4 

    The 4 key.

    +
    Num5 

    The 5 key.

    +
    Num6 

    The 6 key.

    +
    Num7 

    The 7 key.

    +
    Num8 

    The 8 key.

    +
    Num9 

    The 9 key.

    +
    Escape 

    The Escape key.

    +
    LControl 

    The left Control key.

    +
    LShift 

    The left Shift key.

    +
    LAlt 

    The left Alt key.

    +
    LSystem 

    The left OS specific key: window (Windows and Linux), apple (MacOS X), ...

    +
    RControl 

    The right Control key.

    +
    RShift 

    The right Shift key.

    +
    RAlt 

    The right Alt key.

    +
    RSystem 

    The right OS specific key: window (Windows and Linux), apple (MacOS X), ...

    +
    Menu 

    The Menu key.

    +
    LBracket 

    The [ key.

    +
    RBracket 

    The ] key.

    +
    Semicolon 

    The ; key.

    +
    Comma 

    The , key.

    +
    Period 

    The . key.

    +
    Quote 

    The ' key.

    +
    Slash 

    The / key.

    +
    Backslash 

    The \ key.

    +
    Tilde 

    The ~ key.

    +
    Equal 

    The = key.

    +
    Hyphen 

    The - key (hyphen)

    +
    Space 

    The Space key.

    +
    Enter 

    The Enter/Return keys.

    +
    Backspace 

    The Backspace key.

    +
    Tab 

    The Tabulation key.

    +
    PageUp 

    The Page up key.

    +
    PageDown 

    The Page down key.

    +
    End 

    The End key.

    +
    Home 

    The Home key.

    +
    Insert 

    The Insert key.

    +
    Delete 

    The Delete key.

    +
    Add 

    The + key.

    +
    Subtract 

    The - key (minus, usually from numpad)

    +
    Multiply 

    The * key.

    +
    Divide 

    The / key.

    +
    Left 

    Left arrow.

    +
    Right 

    Right arrow.

    +
    Up 

    Up arrow.

    +
    Down 

    Down arrow.

    +
    Numpad0 

    The numpad 0 key.

    +
    Numpad1 

    The numpad 1 key.

    +
    Numpad2 

    The numpad 2 key.

    +
    Numpad3 

    The numpad 3 key.

    +
    Numpad4 

    The numpad 4 key.

    +
    Numpad5 

    The numpad 5 key.

    +
    Numpad6 

    The numpad 6 key.

    +
    Numpad7 

    The numpad 7 key.

    +
    Numpad8 

    The numpad 8 key.

    +
    Numpad9 

    The numpad 9 key.

    +
    F1 

    The F1 key.

    +
    F2 

    The F2 key.

    +
    F3 

    The F3 key.

    +
    F4 

    The F4 key.

    +
    F5 

    The F5 key.

    +
    F6 

    The F6 key.

    +
    F7 

    The F7 key.

    +
    F8 

    The F8 key.

    +
    F9 

    The F9 key.

    +
    F10 

    The F10 key.

    +
    F11 

    The F11 key.

    +
    F12 

    The F12 key.

    +
    F13 

    The F13 key.

    +
    F14 

    The F14 key.

    +
    F15 

    The F15 key.

    +
    Pause 

    The Pause key.

    +
    KeyCount 

    Keep last – the total number of keyboard keys.

    +
    Dash 
    Deprecated:
    Use Hyphen instead
    +
    BackSpace 
    Deprecated:
    Use Backspace instead
    +
    BackSlash 
    Deprecated:
    Use Backslash instead
    +
    SemiColon 
    Deprecated:
    Use Semicolon instead
    +
    Return 
    Deprecated:
    Use Enter instead
    +
    + +

    Definition at line 48 of file Keyboard.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ isKeyPressed()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Keyboard::isKeyPressed (Key key)
    +
    +static
    +
    + +

    Check if a key is pressed.

    +
    Parameters
    + + +
    keyKey to check
    +
    +
    +
    Returns
    True if the key is pressed, false otherwise
    + +
    +
    + +

    ◆ setVirtualKeyboardVisible()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Keyboard::setVirtualKeyboardVisible (bool visible)
    +
    +static
    +
    + +

    Show or hide the virtual keyboard.

    +

    Warning: the virtual keyboard is not supported on all systems. It will typically be implemented on mobile OSes (Android, iOS) but not on desktop OSes (Windows, Linux, ...).

    +

    If the virtual keyboard is not available, this function does nothing.

    +
    Parameters
    + + +
    visibleTrue to show, false to hide
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Listener-members.html b/SFML/doc/html/classsf_1_1Listener-members.html new file mode 100644 index 0000000..76945d7 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Listener-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Listener Member List
    +
    +
    + +

    This is the complete list of members for sf::Listener, including all inherited members.

    + + + + + + + + + + + + +
    getDirection()sf::Listenerstatic
    getGlobalVolume()sf::Listenerstatic
    getPosition()sf::Listenerstatic
    getUpVector()sf::Listenerstatic
    setDirection(float x, float y, float z)sf::Listenerstatic
    setDirection(const Vector3f &direction)sf::Listenerstatic
    setGlobalVolume(float volume)sf::Listenerstatic
    setPosition(float x, float y, float z)sf::Listenerstatic
    setPosition(const Vector3f &position)sf::Listenerstatic
    setUpVector(float x, float y, float z)sf::Listenerstatic
    setUpVector(const Vector3f &upVector)sf::Listenerstatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1Listener.html b/SFML/doc/html/classsf_1_1Listener.html new file mode 100644 index 0000000..efd127d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Listener.html @@ -0,0 +1,537 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Listener Class Reference
    +
    +
    + +

    The audio listener is the point in the scene from where all the sounds are heard. + More...

    + +

    #include <Listener.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    static void setGlobalVolume (float volume)
     Change the global volume of all the sounds and musics. More...
     
    static float getGlobalVolume ()
     Get the current value of the global volume. More...
     
    static void setPosition (float x, float y, float z)
     Set the position of the listener in the scene. More...
     
    static void setPosition (const Vector3f &position)
     Set the position of the listener in the scene. More...
     
    static Vector3f getPosition ()
     Get the current position of the listener in the scene. More...
     
    static void setDirection (float x, float y, float z)
     Set the forward vector of the listener in the scene. More...
     
    static void setDirection (const Vector3f &direction)
     Set the forward vector of the listener in the scene. More...
     
    static Vector3f getDirection ()
     Get the current forward vector of the listener in the scene. More...
     
    static void setUpVector (float x, float y, float z)
     Set the upward vector of the listener in the scene. More...
     
    static void setUpVector (const Vector3f &upVector)
     Set the upward vector of the listener in the scene. More...
     
    static Vector3f getUpVector ()
     Get the current upward vector of the listener in the scene. More...
     
    +

    Detailed Description

    +

    The audio listener is the point in the scene from where all the sounds are heard.

    +

    The audio listener defines the global properties of the audio environment, it defines where and how sounds and musics are heard.

    +

    If sf::View is the eyes of the user, then sf::Listener is his ears (by the way, they are often linked together – same position, orientation, etc.).

    +

    sf::Listener is a simple interface, which allows to setup the listener in the 3D audio environment (position, direction and up vector), and to adjust the global volume.

    +

    Because the listener is unique in the scene, sf::Listener only contains static functions and doesn't have to be instantiated.

    +

    Usage example:

    // Move the listener to the position (1, 0, -5)
    // Make it face the right axis (1, 0, 0)
    // Reduce the global volume
    +

    Definition at line 42 of file Listener.hpp.

    +

    Member Function Documentation

    + +

    ◆ getDirection()

    + +
    +
    + + + + + +
    + + + + + + + +
    static Vector3f sf::Listener::getDirection ()
    +
    +static
    +
    + +

    Get the current forward vector of the listener in the scene.

    +
    Returns
    Listener's forward vector (not normalized)
    +
    See also
    setDirection
    + +
    +
    + +

    ◆ getGlobalVolume()

    + +
    +
    + + + + + +
    + + + + + + + +
    static float sf::Listener::getGlobalVolume ()
    +
    +static
    +
    + +

    Get the current value of the global volume.

    +
    Returns
    Current global volume, in the range [0, 100]
    +
    See also
    setGlobalVolume
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    static Vector3f sf::Listener::getPosition ()
    +
    +static
    +
    + +

    Get the current position of the listener in the scene.

    +
    Returns
    Listener's position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getUpVector()

    + +
    +
    + + + + + +
    + + + + + + + +
    static Vector3f sf::Listener::getUpVector ()
    +
    +static
    +
    + +

    Get the current upward vector of the listener in the scene.

    +
    Returns
    Listener's upward vector (not normalized)
    +
    See also
    setUpVector
    + +
    +
    + +

    ◆ setDirection() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void sf::Listener::setDirection (float x,
    float y,
    float z 
    )
    +
    +static
    +
    + +

    Set the forward vector of the listener in the scene.

    +

    The direction (also called "at vector") is the vector pointing forward from the listener's perspective. Together with the up vector, it defines the 3D orientation of the listener in the scene. The direction vector doesn't have to be normalized. The default listener's direction is (0, 0, -1).

    +
    Parameters
    + + + + +
    xX coordinate of the listener's direction
    yY coordinate of the listener's direction
    zZ coordinate of the listener's direction
    +
    +
    +
    See also
    getDirection, setUpVector, setPosition
    + +
    +
    + +

    ◆ setDirection() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Listener::setDirection (const Vector3fdirection)
    +
    +static
    +
    + +

    Set the forward vector of the listener in the scene.

    +

    The direction (also called "at vector") is the vector pointing forward from the listener's perspective. Together with the up vector, it defines the 3D orientation of the listener in the scene. The direction vector doesn't have to be normalized. The default listener's direction is (0, 0, -1).

    +
    Parameters
    + + +
    directionNew listener's direction
    +
    +
    +
    See also
    getDirection, setUpVector, setPosition
    + +
    +
    + +

    ◆ setGlobalVolume()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Listener::setGlobalVolume (float volume)
    +
    +static
    +
    + +

    Change the global volume of all the sounds and musics.

    +

    The volume is a number between 0 and 100; it is combined with the individual volume of each sound / music. The default value for the volume is 100 (maximum).

    +
    Parameters
    + + +
    volumeNew global volume, in the range [0, 100]
    +
    +
    +
    See also
    getGlobalVolume
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void sf::Listener::setPosition (float x,
    float y,
    float z 
    )
    +
    +static
    +
    + +

    Set the position of the listener in the scene.

    +

    The default listener's position is (0, 0, 0).

    +
    Parameters
    + + + + +
    xX coordinate of the listener's position
    yY coordinate of the listener's position
    zZ coordinate of the listener's position
    +
    +
    +
    See also
    getPosition, setDirection
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Listener::setPosition (const Vector3fposition)
    +
    +static
    +
    + +

    Set the position of the listener in the scene.

    +

    The default listener's position is (0, 0, 0).

    +
    Parameters
    + + +
    positionNew listener's position
    +
    +
    +
    See also
    getPosition, setDirection
    + +
    +
    + +

    ◆ setUpVector() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void sf::Listener::setUpVector (float x,
    float y,
    float z 
    )
    +
    +static
    +
    + +

    Set the upward vector of the listener in the scene.

    +

    The up vector is the vector that points upward from the listener's perspective. Together with the direction, it defines the 3D orientation of the listener in the scene. The up vector doesn't have to be normalized. The default listener's up vector is (0, 1, 0). It is usually not necessary to change it, especially in 2D scenarios.

    +
    Parameters
    + + + + +
    xX coordinate of the listener's up vector
    yY coordinate of the listener's up vector
    zZ coordinate of the listener's up vector
    +
    +
    +
    See also
    getUpVector, setDirection, setPosition
    + +
    +
    + +

    ◆ setUpVector() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Listener::setUpVector (const Vector3fupVector)
    +
    +static
    +
    + +

    Set the upward vector of the listener in the scene.

    +

    The up vector is the vector that points upward from the listener's perspective. Together with the direction, it defines the 3D orientation of the listener in the scene. The up vector doesn't have to be normalized. The default listener's up vector is (0, 1, 0). It is usually not necessary to change it, especially in 2D scenarios.

    +
    Parameters
    + + +
    upVectorNew listener's up vector
    +
    +
    +
    See also
    getUpVector, setDirection, setPosition
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Lock-members.html b/SFML/doc/html/classsf_1_1Lock-members.html new file mode 100644 index 0000000..b35829a --- /dev/null +++ b/SFML/doc/html/classsf_1_1Lock-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Lock Member List
    +
    +
    + +

    This is the complete list of members for sf::Lock, including all inherited members.

    + + + + + +
    Lock(Mutex &mutex)sf::Lockexplicit
    NonCopyable()sf::NonCopyableinlineprivate
    ~Lock()sf::Lock
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Lock.html b/SFML/doc/html/classsf_1_1Lock.html new file mode 100644 index 0000000..4125083 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Lock.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Lock Class Reference
    +
    +
    + +

    Automatic wrapper for locking and unlocking mutexes. + More...

    + +

    #include <Lock.hpp>

    +
    +Inheritance diagram for sf::Lock:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + +

    +Public Member Functions

     Lock (Mutex &mutex)
     Construct the lock with a target mutex. More...
     
     ~Lock ()
     Destructor. More...
     
    +

    Detailed Description

    +

    Automatic wrapper for locking and unlocking mutexes.

    +

    sf::Lock is a RAII wrapper for sf::Mutex.

    +

    By unlocking it in its destructor, it ensures that the mutex will always be released when the current scope (most likely a function) ends. This is even more important when an exception or an early return statement can interrupt the execution flow of the function.

    +

    For maximum robustness, sf::Lock should always be used to lock/unlock a mutex.

    +

    Usage example:

    sf::Mutex mutex;
    void function()
    {
    sf::Lock lock(mutex); // mutex is now locked
    functionThatMayThrowAnException(); // mutex is unlocked if this function throws
    if (someCondition)
    return; // mutex is unlocked
    } // mutex is unlocked

    Because the mutex is not explicitly unlocked in the code, it may remain locked longer than needed. If the region of the code that needs to be protected by the mutex is not the entire function, a good practice is to create a smaller, inner scope so that the lock is limited to this part of the code.

    +
    sf::Mutex mutex;
    void function()
    {
    {
    sf::Lock lock(mutex);
    codeThatRequiresProtection();
    } // mutex is unlocked here
    codeThatDoesntCareAboutTheMutex();
    }

    Having a mutex locked longer than required is a bad practice which can lead to bad performances. Don't forget that when a mutex is locked, other threads may be waiting doing nothing until it is released.

    +
    See also
    sf::Mutex
    + +

    Definition at line 43 of file Lock.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Lock()

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::Lock::Lock (Mutexmutex)
    +
    +explicit
    +
    + +

    Construct the lock with a target mutex.

    +

    The mutex passed to sf::Lock is automatically locked.

    +
    Parameters
    + + +
    mutexMutex to lock
    +
    +
    + +
    +
    + +

    ◆ ~Lock()

    + +
    +
    + + + + + + + +
    sf::Lock::~Lock ()
    +
    + +

    Destructor.

    +

    The destructor of sf::Lock automatically unlocks its mutex.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Lock.png b/SFML/doc/html/classsf_1_1Lock.png new file mode 100644 index 0000000000000000000000000000000000000000..5878b109d1658b86136d217a0f69ac5e511b3610 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^nLr%C!3-pIHCN{XDTx4|5ZC|z{{xvX-h3_XKQsZz z0^Do+>3kP61Pb8m|+R^V|h=llCVU+yTk zx%RcICoN(l{4Yvu^7MGCt=RHFsY%5$V}i=db^l~f=IlPPPj%_#WzLiQw%F<4)e5TG z(UP6K&(PZ|z1^h!+_dbAhFVg~f1lm(JZu(!ZSaw~CdJ<*Kl)rR^x*s5 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::MemoryInputStream Member List
    +
    +
    + +

    This is the complete list of members for sf::MemoryInputStream, including all inherited members.

    + + + + + + + + +
    getSize()sf::MemoryInputStreamvirtual
    MemoryInputStream()sf::MemoryInputStream
    open(const void *data, std::size_t sizeInBytes)sf::MemoryInputStream
    read(void *data, Int64 size)sf::MemoryInputStreamvirtual
    seek(Int64 position)sf::MemoryInputStreamvirtual
    tell()sf::MemoryInputStreamvirtual
    ~InputStream()sf::InputStreaminlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1MemoryInputStream.html b/SFML/doc/html/classsf_1_1MemoryInputStream.html new file mode 100644 index 0000000..6ee4254 --- /dev/null +++ b/SFML/doc/html/classsf_1_1MemoryInputStream.html @@ -0,0 +1,313 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::MemoryInputStream Class Reference
    +
    +
    + +

    Implementation of input stream based on a memory chunk. + More...

    + +

    #include <MemoryInputStream.hpp>

    +
    +Inheritance diagram for sf::MemoryInputStream:
    +
    +
    + + +sf::InputStream + +
    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     MemoryInputStream ()
     Default constructor. More...
     
    void open (const void *data, std::size_t sizeInBytes)
     Open the stream from its data. More...
     
    virtual Int64 read (void *data, Int64 size)
     Read data from the stream. More...
     
    virtual Int64 seek (Int64 position)
     Change the current reading position. More...
     
    virtual Int64 tell ()
     Get the current reading position in the stream. More...
     
    virtual Int64 getSize ()
     Return the size of the stream. More...
     
    +

    Detailed Description

    +

    Implementation of input stream based on a memory chunk.

    +

    This class is a specialization of InputStream that reads from data in memory.

    +

    It wraps a memory chunk in the common InputStream interface and therefore allows to use generic classes or functions that accept such a stream, with content already loaded in memory.

    +

    In addition to the virtual functions inherited from InputStream, MemoryInputStream adds a function to specify the pointer and size of the data in memory.

    +

    SFML resource classes can usually be loaded directly from memory, so this class shouldn't be useful to you unless you create your own algorithms that operate on an InputStream.

    +

    Usage example:

    void process(InputStream& stream);
    stream.open(thePtr, theSize);
    process(stream);

    InputStream, FileInputStream

    + +

    Definition at line 43 of file MemoryInputStream.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ MemoryInputStream()

    + +
    +
    + + + + + + + +
    sf::MemoryInputStream::MemoryInputStream ()
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::MemoryInputStream::getSize ()
    +
    +virtual
    +
    + +

    Return the size of the stream.

    +
    Returns
    The total number of bytes available in the stream, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ open()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::MemoryInputStream::open (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Open the stream from its data.

    +
    Parameters
    + + + +
    dataPointer to the data in memory
    sizeInBytesSize of the data, in bytes
    +
    +
    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual Int64 sf::MemoryInputStream::read (void * data,
    Int64 size 
    )
    +
    +virtual
    +
    + +

    Read data from the stream.

    +

    After reading, the stream's reading position must be advanced by the amount of bytes read.

    +
    Parameters
    + + + +
    dataBuffer where to copy the read data
    sizeDesired number of bytes to read
    +
    +
    +
    Returns
    The number of bytes actually read, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ seek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Int64 sf::MemoryInputStream::seek (Int64 position)
    +
    +virtual
    +
    + +

    Change the current reading position.

    +
    Parameters
    + + +
    positionThe position to seek to, from the beginning
    +
    +
    +
    Returns
    The position actually sought to, or -1 on error
    + +

    Implements sf::InputStream.

    + +
    +
    + +

    ◆ tell()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::MemoryInputStream::tell ()
    +
    +virtual
    +
    + +

    Get the current reading position in the stream.

    +
    Returns
    The current position, or -1 on error.
    + +

    Implements sf::InputStream.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1MemoryInputStream.png b/SFML/doc/html/classsf_1_1MemoryInputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..b51c5d2c00562212e7f780ae77d63eebb3fb27bd GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^JwP15!3-q-Jj#s#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;GAr*{o=f3WHt-!<9t{-&&|3rW1 zLw8kfUiRt^TW91Yb%5u_min99a-&(zJfoPWPgLOs;_h}M#U<>XMmO%ae}BHHTP60h z&$1)?Cv^J0)bq4|7M2$OX5%BHmpd6N<-Z*_&pdEZo!|R+>HA9cVi${a+x6eVwmlB< z>o4`L32sq6`JmBf{<6GDR_0gZL}#^nT$L%t6$niu|3=~cQxFO4Gh?+ zl6mO!EXkBMC8LzKs>w?<&tJa6qSO9L=k(_bSC2-|Usf{B&Tq1ct8Gzbky?SYM@_ntoa9G~=0_ps?UGSbpNoWw~sL zluMV2UMw!GFI;CCw=(=z`(MN3{mFd-&tK?e=uTD&+xU8)p~s$2-<|jKWaOt>U)t0r z=zAeNpJSR`=zB0|*=xo50Qx{4iHU)Tjmy0F$ zXU<}%^E3Z9xj_E(m&5hJX%c@|TQh&qjbS@*D3w9y(ft|@MV*883-8J~E3T + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Mouse Member List
    +
    +
    + +

    This is the complete list of members for sf::Mouse, including all inherited members.

    + + + + + + + + + + + + + + + + +
    Button enum namesf::Mouse
    ButtonCount enum valuesf::Mouse
    getPosition()sf::Mousestatic
    getPosition(const Window &relativeTo)sf::Mousestatic
    HorizontalWheel enum valuesf::Mouse
    isButtonPressed(Button button)sf::Mousestatic
    Left enum valuesf::Mouse
    Middle enum valuesf::Mouse
    Right enum valuesf::Mouse
    setPosition(const Vector2i &position)sf::Mousestatic
    setPosition(const Vector2i &position, const Window &relativeTo)sf::Mousestatic
    VerticalWheel enum valuesf::Mouse
    Wheel enum namesf::Mouse
    XButton1 enum valuesf::Mouse
    XButton2 enum valuesf::Mouse
    + + + + diff --git a/SFML/doc/html/classsf_1_1Mouse.html b/SFML/doc/html/classsf_1_1Mouse.html new file mode 100644 index 0000000..c6302b7 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Mouse.html @@ -0,0 +1,357 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Give access to the real-time state of the mouse. + More...

    + +

    #include <Mouse.hpp>

    + + + + + + + + +

    +Public Types

    enum  Button {
    +  Left, +Right, +Middle, +XButton1, +
    +  XButton2, +ButtonCount +
    + }
     Mouse buttons. More...
     
    enum  Wheel { VerticalWheel, +HorizontalWheel + }
     Mouse wheels. More...
     
    + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    static bool isButtonPressed (Button button)
     Check if a mouse button is pressed. More...
     
    static Vector2i getPosition ()
     Get the current position of the mouse in desktop coordinates. More...
     
    static Vector2i getPosition (const Window &relativeTo)
     Get the current position of the mouse in window coordinates. More...
     
    static void setPosition (const Vector2i &position)
     Set the current position of the mouse in desktop coordinates. More...
     
    static void setPosition (const Vector2i &position, const Window &relativeTo)
     Set the current position of the mouse in window coordinates. More...
     
    +

    Detailed Description

    +

    Give access to the real-time state of the mouse.

    +

    sf::Mouse provides an interface to the state of the mouse.

    +

    It only contains static functions (a single mouse is assumed), so it's not meant to be instantiated.

    +

    This class allows users to query the mouse state at any time and directly, without having to deal with a window and its events. Compared to the MouseMoved, MouseButtonPressed and MouseButtonReleased events, sf::Mouse can retrieve the state of the cursor and the buttons at any time (you don't need to store and update a boolean on your side in order to know if a button is pressed or released), and you always get the real state of the mouse, even if it is moved, pressed or released when your window is out of focus and no event is triggered.

    +

    The setPosition and getPosition functions can be used to change or retrieve the current position of the mouse pointer. There are two versions: one that operates in global coordinates (relative to the desktop) and one that operates in window coordinates (relative to a specific window).

    +

    Usage example:

    {
    // left click...
    }
    // get global mouse position
    // set mouse position relative to a window
    See also
    sf::Joystick, sf::Keyboard, sf::Touch
    + +

    Definition at line 43 of file Mouse.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Button

    + +
    +
    + + + + +
    enum sf::Mouse::Button
    +
    + +

    Mouse buttons.

    + + + + + + + +
    Enumerator
    Left 

    The left mouse button.

    +
    Right 

    The right mouse button.

    +
    Middle 

    The middle (wheel) mouse button.

    +
    XButton1 

    The first extra mouse button.

    +
    XButton2 

    The second extra mouse button.

    +
    ButtonCount 

    Keep last – the total number of mouse buttons.

    +
    + +

    Definition at line 51 of file Mouse.hpp.

    + +
    +
    + +

    ◆ Wheel

    + +
    +
    + + + + +
    enum sf::Mouse::Wheel
    +
    + +

    Mouse wheels.

    + + + +
    Enumerator
    VerticalWheel 

    The vertical mouse wheel.

    +
    HorizontalWheel 

    The horizontal mouse wheel.

    +
    + +

    Definition at line 66 of file Mouse.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    static Vector2i sf::Mouse::getPosition ()
    +
    +static
    +
    + +

    Get the current position of the mouse in desktop coordinates.

    +

    This function returns the global position of the mouse cursor on the desktop.

    +
    Returns
    Current position of the mouse
    + +
    +
    + +

    ◆ getPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static Vector2i sf::Mouse::getPosition (const WindowrelativeTo)
    +
    +static
    +
    + +

    Get the current position of the mouse in window coordinates.

    +

    This function returns the current position of the mouse cursor, relative to the given window.

    +
    Parameters
    + + +
    relativeToReference window
    +
    +
    +
    Returns
    Current position of the mouse
    + +
    +
    + +

    ◆ isButtonPressed()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Mouse::isButtonPressed (Button button)
    +
    +static
    +
    + +

    Check if a mouse button is pressed.

    +
    Parameters
    + + +
    buttonButton to check
    +
    +
    +
    Returns
    True if the button is pressed, false otherwise
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Mouse::setPosition (const Vector2iposition)
    +
    +static
    +
    + +

    Set the current position of the mouse in desktop coordinates.

    +

    This function sets the global position of the mouse cursor on the desktop.

    +
    Parameters
    + + +
    positionNew position of the mouse
    +
    +
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void sf::Mouse::setPosition (const Vector2iposition,
    const WindowrelativeTo 
    )
    +
    +static
    +
    + +

    Set the current position of the mouse in window coordinates.

    +

    This function sets the current position of the mouse cursor, relative to the given window.

    +
    Parameters
    + + + +
    positionNew position of the mouse
    relativeToReference window
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Music-members.html b/SFML/doc/html/classsf_1_1Music-members.html new file mode 100644 index 0000000..86c036f --- /dev/null +++ b/SFML/doc/html/classsf_1_1Music-members.html @@ -0,0 +1,109 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Music Member List
    +
    +
    + +

    This is the complete list of members for sf::Music, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getAttenuation() constsf::SoundSource
    getChannelCount() constsf::SoundStream
    getDuration() constsf::Music
    getLoop() constsf::SoundStream
    getLoopPoints() constsf::Music
    getMinDistance() constsf::SoundSource
    getPitch() constsf::SoundSource
    getPlayingOffset() constsf::SoundStream
    getPosition() constsf::SoundSource
    getSampleRate() constsf::SoundStream
    getStatus() constsf::SoundStreamvirtual
    getVolume() constsf::SoundSource
    sf::SoundStream::initialize(unsigned int channelCount, unsigned int sampleRate)sf::SoundStreamprotected
    isRelativeToListener() constsf::SoundSource
    m_sourcesf::SoundSourceprotected
    Music()sf::Music
    NoLoop enum valuesf::SoundStreamprotected
    onGetData(Chunk &data)sf::Musicprotectedvirtual
    onLoop()sf::Musicprotectedvirtual
    onSeek(Time timeOffset)sf::Musicprotectedvirtual
    openFromFile(const std::string &filename)sf::Music
    openFromMemory(const void *data, std::size_t sizeInBytes)sf::Music
    openFromStream(InputStream &stream)sf::Music
    operator=(const SoundSource &right)sf::SoundSource
    pause()sf::SoundStreamvirtual
    Paused enum valuesf::SoundSource
    play()sf::SoundStreamvirtual
    Playing enum valuesf::SoundSource
    setAttenuation(float attenuation)sf::SoundSource
    setLoop(bool loop)sf::SoundStream
    setLoopPoints(TimeSpan timePoints)sf::Music
    setMinDistance(float distance)sf::SoundSource
    setPitch(float pitch)sf::SoundSource
    setPlayingOffset(Time timeOffset)sf::SoundStream
    setPosition(float x, float y, float z)sf::SoundSource
    setPosition(const Vector3f &position)sf::SoundSource
    setRelativeToListener(bool relative)sf::SoundSource
    setVolume(float volume)sf::SoundSource
    SoundSource(const SoundSource &copy)sf::SoundSource
    SoundSource()sf::SoundSourceprotected
    SoundStream()sf::SoundStreamprotected
    Status enum namesf::SoundSource
    stop()sf::SoundStreamvirtual
    Stopped enum valuesf::SoundSource
    TimeSpan typedef (defined in sf::Music)sf::Music
    ~Music()sf::Music
    ~SoundSource()sf::SoundSourcevirtual
    ~SoundStream()sf::SoundStreamvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Music.html b/SFML/doc/html/classsf_1_1Music.html new file mode 100644 index 0000000..9d934bd --- /dev/null +++ b/SFML/doc/html/classsf_1_1Music.html @@ -0,0 +1,1445 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Streamed music played from an audio file. + More...

    + +

    #include <Music.hpp>

    +
    +Inheritance diagram for sf::Music:
    +
    +
    + + +sf::SoundStream +sf::SoundSource +sf::AlResource + +
    + + + + + +

    +Classes

    struct  Span
     Structure defining a time range using the template type. More...
     
    + + + + + + +

    +Public Types

    +typedef Span< TimeTimeSpan
     
    enum  Status { Stopped, +Paused, +Playing + }
     Enumeration of the sound source states. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Music ()
     Default constructor. More...
     
     ~Music ()
     Destructor. More...
     
    bool openFromFile (const std::string &filename)
     Open a music from an audio file. More...
     
    bool openFromMemory (const void *data, std::size_t sizeInBytes)
     Open a music from an audio file in memory. More...
     
    bool openFromStream (InputStream &stream)
     Open a music from an audio file in a custom stream. More...
     
    Time getDuration () const
     Get the total duration of the music. More...
     
    TimeSpan getLoopPoints () const
     Get the positions of the of the sound's looping sequence. More...
     
    void setLoopPoints (TimeSpan timePoints)
     Sets the beginning and end of the sound's looping sequence using sf::Time. More...
     
    void play ()
     Start or resume playing the audio stream. More...
     
    void pause ()
     Pause the audio stream. More...
     
    void stop ()
     Stop playing the audio stream. More...
     
    unsigned int getChannelCount () const
     Return the number of channels of the stream. More...
     
    unsigned int getSampleRate () const
     Get the stream sample rate of the stream. More...
     
    Status getStatus () const
     Get the current status of the stream (stopped, paused, playing) More...
     
    void setPlayingOffset (Time timeOffset)
     Change the current playing position of the stream. More...
     
    Time getPlayingOffset () const
     Get the current playing position of the stream. More...
     
    void setLoop (bool loop)
     Set whether or not the stream should loop after reaching the end. More...
     
    bool getLoop () const
     Tell whether or not the stream is in loop mode. More...
     
    void setPitch (float pitch)
     Set the pitch of the sound. More...
     
    void setVolume (float volume)
     Set the volume of the sound. More...
     
    void setPosition (float x, float y, float z)
     Set the 3D position of the sound in the audio scene. More...
     
    void setPosition (const Vector3f &position)
     Set the 3D position of the sound in the audio scene. More...
     
    void setRelativeToListener (bool relative)
     Make the sound's position relative to the listener or absolute. More...
     
    void setMinDistance (float distance)
     Set the minimum distance of the sound. More...
     
    void setAttenuation (float attenuation)
     Set the attenuation factor of the sound. More...
     
    float getPitch () const
     Get the pitch of the sound. More...
     
    float getVolume () const
     Get the volume of the sound. More...
     
    Vector3f getPosition () const
     Get the 3D position of the sound in the audio scene. More...
     
    bool isRelativeToListener () const
     Tell whether the sound's position is relative to the listener or is absolute. More...
     
    float getMinDistance () const
     Get the minimum distance of the sound. More...
     
    float getAttenuation () const
     Get the attenuation factor of the sound. More...
     
    + + + +

    +Protected Types

    enum  { NoLoop = -1 + }
     
    + + + + + + + + + + + + + +

    +Protected Member Functions

    virtual bool onGetData (Chunk &data)
     Request a new chunk of audio samples from the stream source. More...
     
    virtual void onSeek (Time timeOffset)
     Change the current playing position in the stream source. More...
     
    virtual Int64 onLoop ()
     Change the current playing position in the stream source to the loop offset. More...
     
    void initialize (unsigned int channelCount, unsigned int sampleRate)
     Define the audio stream parameters. More...
     
    + + + + +

    +Protected Attributes

    unsigned int m_source
     OpenAL source identifier. More...
     
    +

    Detailed Description

    +

    Streamed music played from an audio file.

    +

    Musics are sounds that are streamed rather than completely loaded in memory.

    +

    This is especially useful for compressed musics that usually take hundreds of MB when they are uncompressed: by streaming it instead of loading it entirely, you avoid saturating the memory and have almost no loading delay. This implies that the underlying resource (file, stream or memory buffer) must remain valid for the lifetime of the sf::Music object.

    +

    Apart from that, a sf::Music has almost the same features as the sf::SoundBuffer / sf::Sound pair: you can play/pause/stop it, request its parameters (channels, sample rate), change the way it is played (pitch, volume, 3D position, ...), etc.

    +

    As a sound stream, a music is played in its own thread in order not to block the rest of the program. This means that you can leave the music alone after calling play(), it will manage itself very well.

    +

    Usage example:

    // Declare a new music
    sf::Music music;
    // Open it from an audio file
    if (!music.openFromFile("music.ogg"))
    {
    // error...
    }
    // Change some parameters
    music.setPosition(0, 1, 10); // change its 3D position
    music.setPitch(2); // increase the pitch
    music.setVolume(50); // reduce the volume
    music.setLoop(true); // make it loop
    // Play it
    music.play();
    See also
    sf::Sound, sf::SoundStream
    + +

    Definition at line 48 of file Music.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + + +
    + + + + +
    anonymous enum
    +
    +protectedinherited
    +
    + + +
    Enumerator
    NoLoop 

    "Invalid" endSeeks value, telling us to continue uninterrupted

    +
    + +

    Definition at line 183 of file SoundStream.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::SoundSource::Status
    +
    +inherited
    +
    + +

    Enumeration of the sound source states.

    + + + + +
    Enumerator
    Stopped 

    Sound is not playing.

    +
    Paused 

    Sound is paused.

    +
    Playing 

    Sound is playing.

    +
    + +

    Definition at line 50 of file SoundSource.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Music()

    + +
    +
    + + + + + + + +
    sf::Music::Music ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~Music()

    + +
    +
    + + + + + + + +
    sf::Music::~Music ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getAttenuation () const
    +
    +inherited
    +
    + +

    Get the attenuation factor of the sound.

    +
    Returns
    Attenuation factor of the sound
    +
    See also
    setAttenuation, getMinDistance
    + +
    +
    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int sf::SoundStream::getChannelCount () const
    +
    +inherited
    +
    + +

    Return the number of channels of the stream.

    +

    1 channel means a mono sound, 2 means stereo, etc.

    +
    Returns
    Number of channels
    + +
    +
    + +

    ◆ getDuration()

    + +
    +
    + + + + + + + +
    Time sf::Music::getDuration () const
    +
    + +

    Get the total duration of the music.

    +
    Returns
    Music duration
    + +
    +
    + +

    ◆ getLoop()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::SoundStream::getLoop () const
    +
    +inherited
    +
    + +

    Tell whether or not the stream is in loop mode.

    +
    Returns
    True if the stream is looping, false otherwise
    +
    See also
    setLoop
    + +
    +
    + +

    ◆ getLoopPoints()

    + +
    +
    + + + + + + + +
    TimeSpan sf::Music::getLoopPoints () const
    +
    + +

    Get the positions of the of the sound's looping sequence.

    +
    Returns
    Loop Time position class.
    +
    Warning
    Since setLoopPoints() performs some adjustments on the provided values and rounds them to internal samples, a call to getLoopPoints() is not guaranteed to return the same times passed into a previous call to setLoopPoints(). However, it is guaranteed to return times that will map to the valid internal samples of this Music if they are later passed to setLoopPoints().
    +
    See also
    setLoopPoints
    + +
    +
    + +

    ◆ getMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getMinDistance () const
    +
    +inherited
    +
    + +

    Get the minimum distance of the sound.

    +
    Returns
    Minimum distance of the sound
    +
    See also
    setMinDistance, getAttenuation
    + +
    +
    + +

    ◆ getPitch()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getPitch () const
    +
    +inherited
    +
    + +

    Get the pitch of the sound.

    +
    Returns
    Pitch of the sound
    +
    See also
    setPitch
    + +
    +
    + +

    ◆ getPlayingOffset()

    + +
    +
    + + + + + +
    + + + + + + + +
    Time sf::SoundStream::getPlayingOffset () const
    +
    +inherited
    +
    + +

    Get the current playing position of the stream.

    +
    Returns
    Current playing position, from the beginning of the stream
    +
    See also
    setPlayingOffset
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    Vector3f sf::SoundSource::getPosition () const
    +
    +inherited
    +
    + +

    Get the 3D position of the sound in the audio scene.

    +
    Returns
    Position of the sound
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int sf::SoundStream::getSampleRate () const
    +
    +inherited
    +
    + +

    Get the stream sample rate of the stream.

    +

    The sample rate is the number of audio samples played per second. The higher, the better the quality.

    +
    Returns
    Sample rate, in number of samples per second
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    Status sf::SoundStream::getStatus () const
    +
    +virtualinherited
    +
    + +

    Get the current status of the stream (stopped, paused, playing)

    +
    Returns
    Current status
    + +

    Reimplemented from sf::SoundSource.

    + +
    +
    + +

    ◆ getVolume()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getVolume () const
    +
    +inherited
    +
    + +

    Get the volume of the sound.

    +
    Returns
    Volume of the sound, in the range [0, 100]
    +
    See also
    setVolume
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::SoundStream::initialize (unsigned int channelCount,
    unsigned int sampleRate 
    )
    +
    +protectedinherited
    +
    + +

    Define the audio stream parameters.

    +

    This function must be called by derived classes as soon as they know the audio settings of the stream to play. Any attempt to manipulate the stream (play(), ...) before calling this function will fail. It can be called multiple times if the settings of the audio stream change, but only when the stream is stopped.

    +
    Parameters
    + + + +
    channelCountNumber of channels of the stream
    sampleRateSample rate, in samples per second
    +
    +
    + +
    +
    + +

    ◆ isRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::SoundSource::isRelativeToListener () const
    +
    +inherited
    +
    + +

    Tell whether the sound's position is relative to the listener or is absolute.

    +
    Returns
    True if the position is relative, false if it's absolute
    +
    See also
    setRelativeToListener
    + +
    +
    + +

    ◆ onGetData()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual bool sf::Music::onGetData (Chunkdata)
    +
    +protectedvirtual
    +
    + +

    Request a new chunk of audio samples from the stream source.

    +

    This function fills the chunk from the next samples to read from the audio file.

    +
    Parameters
    + + +
    dataChunk of data to fill
    +
    +
    +
    Returns
    True to continue playback, false to stop
    + +

    Implements sf::SoundStream.

    + +
    +
    + +

    ◆ onLoop()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::Music::onLoop ()
    +
    +protectedvirtual
    +
    + +

    Change the current playing position in the stream source to the loop offset.

    +

    This is called by the underlying SoundStream whenever it needs us to reset the seek position for a loop. We then determine whether we are looping on a loop point or the end-of-file, perform the seek, and return the new position.

    +
    Returns
    The seek position after looping (or -1 if there's no loop)
    + +

    Reimplemented from sf::SoundStream.

    + +
    +
    + +

    ◆ onSeek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void sf::Music::onSeek (Time timeOffset)
    +
    +protectedvirtual
    +
    + +

    Change the current playing position in the stream source.

    +
    Parameters
    + + +
    timeOffsetNew playing position, from the beginning of the music
    +
    +
    + +

    Implements sf::SoundStream.

    + +
    +
    + +

    ◆ openFromFile()

    + +
    +
    + + + + + + + + +
    bool sf::Music::openFromFile (const std::string & filename)
    +
    + +

    Open a music from an audio file.

    +

    This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Warning
    Since the music is not loaded at once but rather streamed continuously, the file must remain accessible until the sf::Music object loads a new music or is destroyed.
    +
    Parameters
    + + +
    filenamePath of the music file to open
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    openFromMemory, openFromStream
    + +
    +
    + +

    ◆ openFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Music::openFromMemory (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Open a music from an audio file in memory.

    +

    This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Warning
    Since the music is not loaded at once but rather streamed continuously, the data buffer must remain accessible until the sf::Music object loads a new music or is destroyed. That is, you can't deallocate the buffer right after calling this function.
    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeInBytesSize of the data to load, in bytes
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    openFromFile, openFromStream
    + +
    +
    + +

    ◆ openFromStream()

    + +
    +
    + + + + + + + + +
    bool sf::Music::openFromStream (InputStreamstream)
    +
    + +

    Open a music from an audio file in a custom stream.

    +

    This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Warning
    Since the music is not loaded at once but rather streamed continuously, the stream must remain accessible until the sf::Music object loads a new music or is destroyed.
    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    openFromFile, openFromMemory
    + +
    +
    + +

    ◆ pause()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::pause ()
    +
    +virtualinherited
    +
    + +

    Pause the audio stream.

    +

    This function pauses the stream if it was playing, otherwise (stream already paused or stopped) it has no effect.

    +
    See also
    play, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ play()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::play ()
    +
    +virtualinherited
    +
    + +

    Start or resume playing the audio stream.

    +

    This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing. This function uses its own thread so that it doesn't block the rest of the program while the stream is played.

    +
    See also
    pause, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ setAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setAttenuation (float attenuation)
    +
    +inherited
    +
    + +

    Set the attenuation factor of the sound.

    +

    The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

    +
    Parameters
    + + +
    attenuationNew attenuation factor of the sound
    +
    +
    +
    See also
    getAttenuation, setMinDistance
    + +
    +
    + +

    ◆ setLoop()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundStream::setLoop (bool loop)
    +
    +inherited
    +
    + +

    Set whether or not the stream should loop after reaching the end.

    +

    If set, the stream will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for streams is false.

    +
    Parameters
    + + +
    loopTrue to play in loop, false to play once
    +
    +
    +
    See also
    getLoop
    + +
    +
    + +

    ◆ setLoopPoints()

    + +
    +
    + + + + + + + + +
    void sf::Music::setLoopPoints (TimeSpan timePoints)
    +
    + +

    Sets the beginning and end of the sound's looping sequence using sf::Time.

    +

    Loop points allow one to specify a pair of positions such that, when the music is enabled for looping, it will seamlessly seek to the beginning whenever it encounters the end. Valid ranges for timePoints.offset and timePoints.length are [0, Dur) and (0, Dur-offset] respectively, where Dur is the value returned by getDuration(). Note that the EOF "loop point" from the end to the beginning of the stream is still honored, in case the caller seeks to a point after the end of the loop range. This function can be safely called at any point after a stream is opened, and will be applied to a playing sound without affecting the current playing offset.

    +
    Warning
    Setting the loop points while the stream's status is Paused will set its status to Stopped. The playing offset will be unaffected.
    +
    Parameters
    + + +
    timePointsThe definition of the loop. Can be any time points within the sound's length
    +
    +
    +
    See also
    getLoopPoints
    + +
    +
    + +

    ◆ setMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setMinDistance (float distance)
    +
    +inherited
    +
    + +

    Set the minimum distance of the sound.

    +

    The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

    +
    Parameters
    + + +
    distanceNew minimum distance of the sound
    +
    +
    +
    See also
    getMinDistance, setAttenuation
    + +
    +
    + +

    ◆ setPitch()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPitch (float pitch)
    +
    +inherited
    +
    + +

    Set the pitch of the sound.

    +

    The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

    +
    Parameters
    + + +
    pitchNew pitch to apply to the sound
    +
    +
    +
    See also
    getPitch
    + +
    +
    + +

    ◆ setPlayingOffset()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundStream::setPlayingOffset (Time timeOffset)
    +
    +inherited
    +
    + +

    Change the current playing position of the stream.

    +

    The playing position can be changed when the stream is either paused or playing. Changing the playing position when the stream is stopped has no effect, since playing the stream would reset its position.

    +
    Parameters
    + + +
    timeOffsetNew playing position, from the beginning of the stream
    +
    +
    +
    See also
    getPlayingOffset
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::SoundSource::setPosition (float x,
    float y,
    float z 
    )
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + + + +
    xX coordinate of the position of the sound in the scene
    yY coordinate of the position of the sound in the scene
    zZ coordinate of the position of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPosition (const Vector3fposition)
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + +
    positionPosition of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setRelativeToListener (bool relative)
    +
    +inherited
    +
    + +

    Make the sound's position relative to the listener or absolute.

    +

    Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

    +
    Parameters
    + + +
    relativeTrue to set the position relative, false to set it absolute
    +
    +
    +
    See also
    isRelativeToListener
    + +
    +
    + +

    ◆ setVolume()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setVolume (float volume)
    +
    +inherited
    +
    + +

    Set the volume of the sound.

    +

    The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

    +
    Parameters
    + + +
    volumeVolume of the sound
    +
    +
    +
    See also
    getVolume
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::stop ()
    +
    +virtualinherited
    +
    + +

    Stop playing the audio stream.

    +

    This function stops the stream if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

    +
    See also
    play, pause
    + +

    Implements sf::SoundSource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_source

    + +
    +
    + + + + + +
    + + + + +
    unsigned int sf::SoundSource::m_source
    +
    +protectedinherited
    +
    + +

    OpenAL source identifier.

    + +

    Definition at line 309 of file SoundSource.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Music.png b/SFML/doc/html/classsf_1_1Music.png new file mode 100644 index 0000000000000000000000000000000000000000..d1366905d41479b4b20ec6d416ddc51e83a62db3 GIT binary patch literal 919 zcmeAS@N?(olHy`uVBq!ia0vp^nLvDigBeH~`0v#NQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Z;q?^;Brs=)<=p8qE;)5T9rdg3rcC3Bj*+0v9-$IGMaCz+f)k#gPp_U)`! z?J6&MtuF6+o%WjfvRz%x{oP!pb@LmqZPDFvK6`pbkLo)9+Ba6_TN$ryxj$KSe$J_L zdrrkAuR49b_I>Q!ZRTHDzXS-T?#_L<^=7uy`SU6(?b5%Onj@``WQ zrf>S==)rab1Wb1 z1=5**)I9QGnD0M_^TFp%W5yc0!ex&q7oXFcpn9?qWQKjZ*UD{K(UYpK9ZWYAUuO0G z-ma)L$!aNMv$ea8qqn46`)#m`KJuw{hFsFM1)D-*H_q7BnR;-N`|Zv7%eNdebf56{ zl~1kKt;0NZ#|+DUPF#7ea!)t+Jj7z)J%b^QQ}}>RBGU|2ABN2>oC(tmWarN*E^E~BQwLyxmO2E83K^UU?9&dwCHT=~am z|E6z1zxiVE8{-)vV3Y-U=}lme;Q;zuJ}v6ivyQy_*IEqM_av&2{IhSG12d8gR!56>W{2d*<{ltNk z&FlrIR(}uKoT;bLSo`nUJfGC9nz!5jCB9|+qYVw|Ler&FCb8EuL?5 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Mutex Member List
    +
    +
    + +

    This is the complete list of members for sf::Mutex, including all inherited members.

    + + + + + + + +
    lock()sf::Mutex
    Mutex()sf::Mutex
    NonCopyable()sf::NonCopyableinlineprivate
    unlock()sf::Mutex
    ~Mutex()sf::Mutex
    ~NonCopyable()sf::NonCopyableinlineprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1Mutex.html b/SFML/doc/html/classsf_1_1Mutex.html new file mode 100644 index 0000000..84c5e3d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Mutex.html @@ -0,0 +1,186 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Mutex Class Reference
    +
    +
    + +

    Blocks concurrent access to shared resources from multiple threads. + More...

    + +

    #include <Mutex.hpp>

    +
    +Inheritance diagram for sf::Mutex:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + + + + + + + +

    +Public Member Functions

     Mutex ()
     Default constructor. More...
     
     ~Mutex ()
     Destructor. More...
     
    void lock ()
     Lock the mutex. More...
     
    void unlock ()
     Unlock the mutex. More...
     
    +

    Detailed Description

    +

    Blocks concurrent access to shared resources from multiple threads.

    +

    Mutex stands for "MUTual EXclusion".

    +

    A mutex is a synchronization object, used when multiple threads are involved.

    +

    When you want to protect a part of the code from being accessed simultaneously by multiple threads, you typically use a mutex. When a thread is locked by a mutex, any other thread trying to lock it will be blocked until the mutex is released by the thread that locked it. This way, you can allow only one thread at a time to access a critical region of your code.

    +

    Usage example:

    Database database; // this is a critical resource that needs some protection
    sf::Mutex mutex;
    void thread1()
    {
    mutex.lock(); // this call will block the thread if the mutex is already locked by thread2
    database.write(...);
    mutex.unlock(); // if thread2 was waiting, it will now be unblocked
    }
    void thread2()
    {
    mutex.lock(); // this call will block the thread if the mutex is already locked by thread1
    database.write(...);
    mutex.unlock(); // if thread1 was waiting, it will now be unblocked
    }

    Be very careful with mutexes. A bad usage can lead to bad problems, like deadlocks (two threads are waiting for each other and the application is globally stuck).

    +

    To make the usage of mutexes more robust, particularly in environments where exceptions can be thrown, you should use the helper class sf::Lock to lock/unlock mutexes.

    +

    SFML mutexes are recursive, which means that you can lock a mutex multiple times in the same thread without creating a deadlock. In this case, the first call to lock() behaves as usual, and the following ones have no effect. However, you must call unlock() exactly as many times as you called lock(). If you don't, the mutex won't be released.

    +
    See also
    sf::Lock
    + +

    Definition at line 47 of file Mutex.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Mutex()

    + +
    +
    + + + + + + + +
    sf::Mutex::Mutex ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~Mutex()

    + +
    +
    + + + + + + + +
    sf::Mutex::~Mutex ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ lock()

    + +
    +
    + + + + + + + +
    void sf::Mutex::lock ()
    +
    + +

    Lock the mutex.

    +

    If the mutex is already locked in another thread, this call will block the execution until the mutex is released.

    +
    See also
    unlock
    + +
    +
    + +

    ◆ unlock()

    + +
    +
    + + + + + + + +
    void sf::Mutex::unlock ()
    +
    + +

    Unlock the mutex.

    +
    See also
    lock
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Mutex.png b/SFML/doc/html/classsf_1_1Mutex.png new file mode 100644 index 0000000000000000000000000000000000000000..6759c64b06430daad72869ad3383e3bac4eaca77 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^nLr%C!3-pIHCN{XDTx4|5ZC|z{{xvX-h3_XKQsZz z0^K2I0NkP61PbKh=jQV?)8Z@>3{=K7=q z4PDPl3-{{wOlEnU^K9|2?(g@?1>+`JWlT_cx$0lvlbAU($~`N0yqvV8?cVRDk*=p^ zckkYMer~E~rObr1>(6%RNwBpZeOVmiv2p6@+1qX=E1jM5#YLi0F7Kv-?2edwn@rm` zFZpyL`-j@f9Z%V%mxLB2v7MhZjj1hX=FvO$+mzQV=J(vTM*C0R+?@WkpM|T}>v+0m zU0eBL;gKzWLsV8|ZBDVTdh!Z#}Q)t~L6qmG5i$8Ee*v zJBXJm?~U6VaMwe4h43nQ&IQx==`Ru#K2U$5gY&^pDMLn^cxAPQ=h;VCKGgKic=U8m zacm3oiv^BMJ65$%T(+s_Dv! zEk9kse9G0D`NkE+m8(wKoqQ&;;9BRKsbBjgoVn~x_p63_-c-w#U<$E{UOvZHx+n49 zCgq}Ut0w70Pb_nO&v<7k$Sx3Gr}BKx>xJ?w1VxXE8$0|0#ukI8tDnm{r-UW|QoHD5 literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1NonCopyable-members.html b/SFML/doc/html/classsf_1_1NonCopyable-members.html new file mode 100644 index 0000000..1cf962b --- /dev/null +++ b/SFML/doc/html/classsf_1_1NonCopyable-members.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::NonCopyable Member List
    +
    +
    + +

    This is the complete list of members for sf::NonCopyable, including all inherited members.

    + + + +
    NonCopyable()sf::NonCopyableinlineprotected
    ~NonCopyable()sf::NonCopyableinlineprotected
    + + + + diff --git a/SFML/doc/html/classsf_1_1NonCopyable.html b/SFML/doc/html/classsf_1_1NonCopyable.html new file mode 100644 index 0000000..85fc6b3 --- /dev/null +++ b/SFML/doc/html/classsf_1_1NonCopyable.html @@ -0,0 +1,172 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::NonCopyable Class Reference
    +
    +
    + +

    Utility class that makes any derived class non-copyable. + More...

    + +

    #include <NonCopyable.hpp>

    +
    +Inheritance diagram for sf::NonCopyable:
    +
    +
    + + +sf::Context +sf::Cursor +sf::FileInputStream +sf::Ftp +sf::GlResource::TransientContextLock +sf::Http +sf::InputSoundFile +sf::Lock +sf::Mutex +sf::OutputSoundFile +sf::RenderTarget +sf::Shader +sf::Socket +sf::Thread +sf::ThreadLocal +sf::Window + +
    + + + + + + + + +

    +Protected Member Functions

     NonCopyable ()
     Default constructor. More...
     
     ~NonCopyable ()
     Default destructor. More...
     
    +

    Detailed Description

    +

    Utility class that makes any derived class non-copyable.

    +

    This class makes its instances non-copyable, by explicitly disabling its copy constructor and its assignment operator.

    +

    To create a non-copyable class, simply inherit from sf::NonCopyable.

    +

    The type of inheritance (public or private) doesn't matter, the copy constructor and assignment operator are declared private in sf::NonCopyable so they will end up being inaccessible in both cases. Thus you can use a shorter syntax for inheriting from it (see below).

    +

    Usage example:

    class MyNonCopyableClass : sf::NonCopyable
    {
    ...
    };

    Deciding whether the instances of a class can be copied or not is a very important design choice. You are strongly encouraged to think about it before writing a class, and to use sf::NonCopyable when necessary to prevent many potential future errors when using it. This is also a very important indication to users of your class.

    + +

    Definition at line 41 of file NonCopyable.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ NonCopyable()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::NonCopyable::NonCopyable ()
    +
    +inlineprotected
    +
    + +

    Default constructor.

    +

    Because this class has a copy constructor, the compiler will not automatically generate the default constructor. That's why we must define it explicitly.

    + +

    Definition at line 53 of file NonCopyable.hpp.

    + +
    +
    + +

    ◆ ~NonCopyable()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::NonCopyable::~NonCopyable ()
    +
    +inlineprotected
    +
    + +

    Default destructor.

    +

    By declaring a protected destructor it's impossible to call delete on a pointer of sf::NonCopyable, thus preventing possible resource leaks.

    + +

    Definition at line 63 of file NonCopyable.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1NonCopyable.png b/SFML/doc/html/classsf_1_1NonCopyable.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c6bddb648e560445e64089e5b4985e98df15b0 GIT binary patch literal 6259 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 ZYG-Zi-5Yh_KLmD|kHbT1KKfhE{{XIz`k?>- literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1OutputSoundFile-members.html b/SFML/doc/html/classsf_1_1OutputSoundFile-members.html new file mode 100644 index 0000000..932bf5c --- /dev/null +++ b/SFML/doc/html/classsf_1_1OutputSoundFile-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::OutputSoundFile Member List
    +
    +
    + +

    This is the complete list of members for sf::OutputSoundFile, including all inherited members.

    + + + + + + + +
    NonCopyable()sf::NonCopyableinlineprivate
    openFromFile(const std::string &filename, unsigned int sampleRate, unsigned int channelCount)sf::OutputSoundFile
    OutputSoundFile()sf::OutputSoundFile
    write(const Int16 *samples, Uint64 count)sf::OutputSoundFile
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~OutputSoundFile()sf::OutputSoundFile
    + + + + diff --git a/SFML/doc/html/classsf_1_1OutputSoundFile.html b/SFML/doc/html/classsf_1_1OutputSoundFile.html new file mode 100644 index 0000000..0554f4d --- /dev/null +++ b/SFML/doc/html/classsf_1_1OutputSoundFile.html @@ -0,0 +1,225 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::OutputSoundFile Class Reference
    +
    +
    + +

    Provide write access to sound files. + More...

    + +

    #include <OutputSoundFile.hpp>

    +
    +Inheritance diagram for sf::OutputSoundFile:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + + + + + + + +

    +Public Member Functions

     OutputSoundFile ()
     Default constructor. More...
     
     ~OutputSoundFile ()
     Destructor. More...
     
    bool openFromFile (const std::string &filename, unsigned int sampleRate, unsigned int channelCount)
     Open the sound file from the disk for writing. More...
     
    void write (const Int16 *samples, Uint64 count)
     Write audio samples to the file. More...
     
    +

    Detailed Description

    +

    Provide write access to sound files.

    +

    This class encodes audio samples to a sound file.

    +

    It is used internally by higher-level classes such as sf::SoundBuffer, but can also be useful if you want to create audio files from custom data sources, like generated audio samples.

    +

    Usage example:

    // Create a sound file, ogg/vorbis format, 44100 Hz, stereo
    if (!file.openFromFile("music.ogg", 44100, 2))
    /* error */;
    while (...)
    {
    // Read or generate audio samples from your custom source
    std::vector<sf::Int16> samples = ...;
    // Write them to the file
    file.write(samples.data(), samples.size());
    }
    See also
    sf::SoundFileWriter, sf::InputSoundFile
    + +

    Definition at line 44 of file OutputSoundFile.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ OutputSoundFile()

    + +
    +
    + + + + + + + +
    sf::OutputSoundFile::OutputSoundFile ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~OutputSoundFile()

    + +
    +
    + + + + + + + +
    sf::OutputSoundFile::~OutputSoundFile ()
    +
    + +

    Destructor.

    +

    Closes the file if it was still open.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ openFromFile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::OutputSoundFile::openFromFile (const std::string & filename,
    unsigned int sampleRate,
    unsigned int channelCount 
    )
    +
    + +

    Open the sound file from the disk for writing.

    +

    The supported audio formats are: WAV, OGG/Vorbis, FLAC.

    +
    Parameters
    + + + + +
    filenamePath of the sound file to write
    sampleRateSample rate of the sound
    channelCountNumber of channels in the sound
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ write()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::OutputSoundFile::write (const Int16 * samples,
    Uint64 count 
    )
    +
    + +

    Write audio samples to the file.

    +
    Parameters
    + + + +
    samplesPointer to the sample array to write
    countNumber of samples to write
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1OutputSoundFile.png b/SFML/doc/html/classsf_1_1OutputSoundFile.png new file mode 100644 index 0000000000000000000000000000000000000000..19568308ebdaeb76c0328e0e92e4958620026fba GIT binary patch literal 576 zcmV-G0>AxvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0005cNkldp}2bNt&UBmZS^y57ExW z8}lhC54ZhD(hD8)Cut|>oc&zCefuOVDUVU~&N2nL@Mcg5ZqG50sxQOc+)j%c^bSr- zgpu#VB`2hk%5X2Y-0eBKEUMj27hPQPizDc!pRwtmqMs%R4K~4!DSI}vD-WWrHJbfM zvg5^BTPL?IjSer5wL*`bb>Y;s3G3RTr z|G6aTO5GOiz4ucD@Vy=Yb2JbAcuZr@LvQ3+?1^ZAX}V+0t7?F|XjKhx53Q;J?x9sR zz&*682Dpb-)c|91&bc|l0nE@s16-(ogx-8-tzTpUcI<&F2cXb4dAK>;0(n$u^AK+9 z=X%-hL?@@WL`H|5 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Packet Member List
    +
    +
    + +

    This is the complete list of members for sf::Packet, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    append(const void *data, std::size_t sizeInBytes)sf::Packet
    clear()sf::Packet
    endOfPacket() constsf::Packet
    getData() constsf::Packet
    getDataSize() constsf::Packet
    onReceive(const void *data, std::size_t size)sf::Packetprotectedvirtual
    onSend(std::size_t &size)sf::Packetprotectedvirtual
    operator BoolType() constsf::Packet
    operator<<(bool data)sf::Packet
    operator<<(Int8 data)sf::Packet
    operator<<(Uint8 data)sf::Packet
    operator<<(Int16 data)sf::Packet
    operator<<(Uint16 data)sf::Packet
    operator<<(Int32 data)sf::Packet
    operator<<(Uint32 data)sf::Packet
    operator<<(Int64 data)sf::Packet
    operator<<(Uint64 data)sf::Packet
    operator<<(float data)sf::Packet
    operator<<(double data)sf::Packet
    operator<<(const char *data)sf::Packet
    operator<<(const std::string &data)sf::Packet
    operator<<(const wchar_t *data)sf::Packet
    operator<<(const std::wstring &data)sf::Packet
    operator<<(const String &data)sf::Packet
    operator>>(bool &data)sf::Packet
    operator>>(Int8 &data)sf::Packet
    operator>>(Uint8 &data)sf::Packet
    operator>>(Int16 &data)sf::Packet
    operator>>(Uint16 &data)sf::Packet
    operator>>(Int32 &data)sf::Packet
    operator>>(Uint32 &data)sf::Packet
    operator>>(Int64 &data)sf::Packet
    operator>>(Uint64 &data)sf::Packet
    operator>>(float &data)sf::Packet
    operator>>(double &data)sf::Packet
    operator>>(char *data)sf::Packet
    operator>>(std::string &data)sf::Packet
    operator>>(wchar_t *data)sf::Packet
    operator>>(std::wstring &data)sf::Packet
    operator>>(String &data)sf::Packet
    Packet()sf::Packet
    TcpSocket (defined in sf::Packet)sf::Packetfriend
    UdpSocket (defined in sf::Packet)sf::Packetfriend
    ~Packet()sf::Packetvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Packet.html b/SFML/doc/html/classsf_1_1Packet.html new file mode 100644 index 0000000..7e5bcb0 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Packet.html @@ -0,0 +1,1156 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Utility class to build blocks of data to transfer over the network. + More...

    + +

    #include <Packet.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Packet ()
     Default constructor. More...
     
    virtual ~Packet ()
     Virtual destructor. More...
     
    void append (const void *data, std::size_t sizeInBytes)
     Append data to the end of the packet. More...
     
    void clear ()
     Clear the packet. More...
     
    const void * getData () const
     Get a pointer to the data contained in the packet. More...
     
    std::size_t getDataSize () const
     Get the size of the data contained in the packet. More...
     
    bool endOfPacket () const
     Tell if the reading position has reached the end of the packet. More...
     
     operator BoolType () const
     Test the validity of the packet, for reading. More...
     
    Packetoperator>> (bool &data)
     Overload of operator >> to read data from the packet. More...
     
    Packetoperator>> (Int8 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Uint8 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Int16 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Uint16 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Int32 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Uint32 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Int64 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (Uint64 &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (float &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (double &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (char *data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (std::string &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (wchar_t *data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (std::wstring &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator>> (String &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (bool data)
     Overload of operator << to write data into the packet. More...
     
    Packetoperator<< (Int8 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Uint8 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Int16 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Uint16 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Int32 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Uint32 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Int64 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (Uint64 data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (float data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (double data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (const char *data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (const std::string &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (const wchar_t *data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (const std::wstring &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    Packetoperator<< (const String &data)
     This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
     
    + + + + + + + +

    +Protected Member Functions

    virtual const void * onSend (std::size_t &size)
     Called before the packet is sent over the network. More...
     
    virtual void onReceive (const void *data, std::size_t size)
     Called after the packet is received over the network. More...
     
    + + + + + +

    +Friends

    +class TcpSocket
     
    +class UdpSocket
     
    +

    Detailed Description

    +

    Utility class to build blocks of data to transfer over the network.

    +

    Packets provide a safe and easy way to serialize data, in order to send it over the network using sockets (sf::TcpSocket, sf::UdpSocket).

    +

    Packets solve 2 fundamental problems that arise when transferring data over the network:

      +
    • data is interpreted correctly according to the endianness
    • +
    • the bounds of the packet are preserved (one send == one receive)
    • +
    +

    The sf::Packet class provides both input and output modes. It is designed to follow the behavior of standard C++ streams, using operators >> and << to extract and insert data.

    +

    It is recommended to use only fixed-size types (like sf::Int32, etc.), to avoid possible differences between the sender and the receiver. Indeed, the native C++ types may have different sizes on two platforms and your data may be corrupted if that happens.

    +

    Usage example:

    sf::Uint32 x = 24;
    std::string s = "hello";
    double d = 5.89;
    // Group the variables to send into a packet
    sf::Packet packet;
    packet << x << s << d;
    // Send it over the network (socket is a valid sf::TcpSocket)
    socket.send(packet);
    -----------------------------------------------------------------
    // Receive the packet at the other end
    sf::Packet packet;
    socket.receive(packet);
    // Extract the variables contained in the packet
    sf::Uint32 x;
    std::string s;
    double d;
    if (packet >> x >> s >> d)
    {
    // Data extracted successfully...
    }

    Packets have built-in operator >> and << overloads for standard types:

      +
    • bool
    • +
    • fixed-size integer types (sf::Int8/16/32, sf::Uint8/16/32)
    • +
    • floating point numbers (float, double)
    • +
    • string types (char*, wchar_t*, std::string, std::wstring, sf::String)
    • +
    +

    Like standard streams, it is also possible to define your own overloads of operators >> and << in order to handle your custom types.

    +
    struct MyStruct
    {
    float number;
    sf::Int8 integer;
    std::string str;
    };
    sf::Packet& operator <<(sf::Packet& packet, const MyStruct& m)
    {
    return packet << m.number << m.integer << m.str;
    }
    sf::Packet& operator >>(sf::Packet& packet, MyStruct& m)
    {
    return packet >> m.number >> m.integer >> m.str;
    }

    Packets also provide an extra feature that allows to apply custom transformations to the data before it is sent, and after it is received. This is typically used to handle automatic compression or encryption of the data. This is achieved by inheriting from sf::Packet, and overriding the onSend and onReceive functions.

    +

    Here is an example:

    class ZipPacket : public sf::Packet
    {
    virtual const void* onSend(std::size_t& size)
    {
    const void* srcData = getData();
    std::size_t srcSize = getDataSize();
    return MySuperZipFunction(srcData, srcSize, &size);
    }
    virtual void onReceive(const void* data, std::size_t size)
    {
    std::size_t dstSize;
    const void* dstData = MySuperUnzipFunction(data, size, &dstSize);
    append(dstData, dstSize);
    }
    };
    // Use like regular packets:
    ZipPacket packet;
    packet << x << s << d;
    ...
    See also
    sf::TcpSocket, sf::UdpSocket
    + +

    Definition at line 47 of file Packet.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Packet()

    + +
    +
    + + + + + + + +
    sf::Packet::Packet ()
    +
    + +

    Default constructor.

    +

    Creates an empty packet.

    + +
    +
    + +

    ◆ ~Packet()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Packet::~Packet ()
    +
    +virtual
    +
    + +

    Virtual destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ append()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Packet::append (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Append data to the end of the packet.

    +
    Parameters
    + + + +
    dataPointer to the sequence of bytes to append
    sizeInBytesNumber of bytes to append
    +
    +
    +
    See also
    clear
    + +
    +
    + +

    ◆ clear()

    + +
    +
    + + + + + + + +
    void sf::Packet::clear ()
    +
    + +

    Clear the packet.

    +

    After calling Clear, the packet is empty.

    +
    See also
    append
    + +
    +
    + +

    ◆ endOfPacket()

    + +
    +
    + + + + + + + +
    bool sf::Packet::endOfPacket () const
    +
    + +

    Tell if the reading position has reached the end of the packet.

    +

    This function is useful to know if there is some data left to be read, without actually reading it.

    +
    Returns
    True if all data was read, false otherwise
    +
    See also
    operator bool
    + +
    +
    + +

    ◆ getData()

    + +
    +
    + + + + + + + +
    const void* sf::Packet::getData () const
    +
    + +

    Get a pointer to the data contained in the packet.

    +

    Warning: the returned pointer may become invalid after you append data to the packet, therefore it should never be stored. The return pointer is NULL if the packet is empty.

    +
    Returns
    Pointer to the data
    +
    See also
    getDataSize
    + +
    +
    + +

    ◆ getDataSize()

    + +
    +
    + + + + + + + +
    std::size_t sf::Packet::getDataSize () const
    +
    + +

    Get the size of the data contained in the packet.

    +

    This function returns the number of bytes pointed to by what getData returns.

    +
    Returns
    Data size, in bytes
    +
    See also
    getData
    + +
    +
    + +

    ◆ onReceive()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void sf::Packet::onReceive (const void * data,
    std::size_t size 
    )
    +
    +protectedvirtual
    +
    + +

    Called after the packet is received over the network.

    +

    This function can be defined by derived classes to transform the data after it is received; this can be used for decompression, decryption, etc. The function receives a pointer to the received data, and must fill the packet with the transformed bytes. The default implementation fills the packet directly without transforming the data.

    +
    Parameters
    + + + +
    dataPointer to the received bytes
    sizeNumber of bytes
    +
    +
    +
    See also
    onSend
    + +
    +
    + +

    ◆ onSend()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual const void* sf::Packet::onSend (std::size_t & size)
    +
    +protectedvirtual
    +
    + +

    Called before the packet is sent over the network.

    +

    This function can be defined by derived classes to transform the data before it is sent; this can be used for compression, encryption, etc. The function must return a pointer to the modified data, as well as the number of bytes pointed. The default implementation provides the packet's data without transforming it.

    +
    Parameters
    + + +
    sizeVariable to fill with the size of data to send
    +
    +
    +
    Returns
    Pointer to the array of bytes to send
    +
    See also
    onReceive
    + +
    +
    + +

    ◆ operator BoolType()

    + +
    +
    + + + + + + + +
    sf::Packet::operator BoolType () const
    +
    + +

    Test the validity of the packet, for reading.

    +

    This operator allows to test the packet as a boolean variable, to check if a reading operation was successful.

    +

    A packet will be in an invalid state if it has no more data to read.

    +

    This behavior is the same as standard C++ streams.

    +

    Usage example:

    float x;
    packet >> x;
    if (packet)
    {
    // ok, x was extracted successfully
    }
    // -- or --
    float x;
    if (packet >> x)
    {
    // ok, x was extracted successfully
    }

    Don't focus on the return type, it's equivalent to bool but it disallows unwanted implicit conversions to integer or pointer types.

    +
    Returns
    True if last data extraction from packet was successful
    +
    See also
    endOfPacket
    + +
    +
    + +

    ◆ operator<<() [1/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (bool data)
    +
    + +

    Overload of operator << to write data into the packet.

    + +
    +
    + +

    ◆ operator<<() [2/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Int8 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [3/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Uint8 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [4/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Int16 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [5/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Uint16 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [6/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Int32 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [7/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Uint32 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [8/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Int64 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [9/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (Uint64 data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [10/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (float data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [11/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (double data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [12/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (const char * data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [13/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (const std::string & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [14/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (const wchar_t * data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [15/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (const std::wstring & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator<<() [16/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator<< (const Stringdata)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [1/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (bool & data)
    +
    + +

    Overload of operator >> to read data from the packet.

    + +
    +
    + +

    ◆ operator>>() [2/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Int8 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [3/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Uint8 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [4/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Int16 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [5/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Uint16 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [6/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Int32 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [7/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Uint32 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [8/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Int64 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [9/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Uint64 & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [10/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (float & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [11/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (double & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [12/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (char * data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [13/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (std::string & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [14/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (wchar_t * data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [15/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (std::wstring & data)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ operator>>() [16/16]

    + +
    +
    + + + + + + + + +
    Packet& sf::Packet::operator>> (Stringdata)
    +
    + +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Rect-members.html b/SFML/doc/html/classsf_1_1Rect-members.html new file mode 100644 index 0000000..83af0f2 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Rect-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Rect< T > Member List
    +
    +
    + +

    This is the complete list of members for sf::Rect< T >, including all inherited members.

    + + + + + + + + + + + + + + + +
    contains(T x, T y) constsf::Rect< T >
    contains(const Vector2< T > &point) constsf::Rect< T >
    heightsf::Rect< T >
    intersects(const Rect< T > &rectangle) constsf::Rect< T >
    intersects(const Rect< T > &rectangle, Rect< T > &intersection) constsf::Rect< T >
    leftsf::Rect< T >
    operator!=(const Rect< T > &left, const Rect< T > &right)sf::Rect< T >related
    operator==(const Rect< T > &left, const Rect< T > &right)sf::Rect< T >related
    Rect()sf::Rect< T >
    Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight)sf::Rect< T >
    Rect(const Vector2< T > &position, const Vector2< T > &size)sf::Rect< T >
    Rect(const Rect< U > &rectangle)sf::Rect< T >explicit
    topsf::Rect< T >
    widthsf::Rect< T >
    + + + + diff --git a/SFML/doc/html/classsf_1_1Rect.html b/SFML/doc/html/classsf_1_1Rect.html new file mode 100644 index 0000000..c24cf19 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Rect.html @@ -0,0 +1,630 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Utility class for manipulating 2D axis aligned rectangles. + More...

    + +

    #include <Rect.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Rect ()
     Default constructor. More...
     
     Rect (T rectLeft, T rectTop, T rectWidth, T rectHeight)
     Construct the rectangle from its coordinates. More...
     
     Rect (const Vector2< T > &position, const Vector2< T > &size)
     Construct the rectangle from position and size. More...
     
    template<typename U >
     Rect (const Rect< U > &rectangle)
     Construct the rectangle from another type of rectangle. More...
     
    bool contains (T x, T y) const
     Check if a point is inside the rectangle's area. More...
     
    bool contains (const Vector2< T > &point) const
     Check if a point is inside the rectangle's area. More...
     
    bool intersects (const Rect< T > &rectangle) const
     Check the intersection between two rectangles. More...
     
    bool intersects (const Rect< T > &rectangle, Rect< T > &intersection) const
     Check the intersection between two rectangles. More...
     
    + + + + + + + + + + + + + +

    +Public Attributes

    left
     Left coordinate of the rectangle. More...
     
    top
     Top coordinate of the rectangle. More...
     
    width
     Width of the rectangle. More...
     
    height
     Height of the rectangle. More...
     
    + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    template<typename T >
    bool operator== (const Rect< T > &left, const Rect< T > &right)
     Overload of binary operator ==. More...
     
    template<typename T >
    bool operator!= (const Rect< T > &left, const Rect< T > &right)
     Overload of binary operator !=. More...
     
    +

    Detailed Description

    +

    template<typename T>
    +class sf::Rect< T >

    + +

    Utility class for manipulating 2D axis aligned rectangles.

    +

    A rectangle is defined by its top-left corner and its size.

    +

    It is a very simple class defined for convenience, so its member variables (left, top, width and height) are public and can be accessed directly, just like the vector classes (Vector2 and Vector3).

    +

    To keep things simple, sf::Rect doesn't define functions to emulate the properties that are not directly members (such as right, bottom, center, etc.), it rather only provides intersection functions.

    +

    sf::Rect uses the usual rules for its boundaries:

      +
    • The left and top edges are included in the rectangle's area
    • +
    • The right (left + width) and bottom (top + height) edges are excluded from the rectangle's area
    • +
    +

    This means that sf::IntRect(0, 0, 1, 1) and sf::IntRect(1, 1, 1, 1) don't intersect.

    +

    sf::Rect is a template and may be used with any numeric type, but for simplicity the instantiations used by SFML are typedef'd:

      +
    • sf::Rect<int> is sf::IntRect
    • +
    • sf::Rect<float> is sf::FloatRect
    • +
    +

    So that you don't have to care about the template syntax.

    +

    Usage example:

    // Define a rectangle, located at (0, 0) with a size of 20x5
    sf::IntRect r1(0, 0, 20, 5);
    // Define another rectangle, located at (4, 2) with a size of 18x10
    sf::Vector2i position(4, 2);
    sf::Vector2i size(18, 10);
    sf::IntRect r2(position, size);
    // Test intersections with the point (3, 1)
    bool b1 = r1.contains(3, 1); // true
    bool b2 = r2.contains(3, 1); // false
    // Test the intersection between r1 and r2
    sf::IntRect result;
    bool b3 = r1.intersects(r2, result); // true
    // result == (4, 2, 16, 3)
    +

    Definition at line 42 of file Rect.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Rect() [1/4]

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    sf::Rect< T >::Rect ()
    +
    + +

    Default constructor.

    +

    Creates an empty rectangle (it is equivalent to calling Rect(0, 0, 0, 0)).

    + +
    +
    + +

    ◆ Rect() [2/4]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Rect< T >::Rect (rectLeft,
    rectTop,
    rectWidth,
    rectHeight 
    )
    +
    + +

    Construct the rectangle from its coordinates.

    +

    Be careful, the last two parameters are the width and height, not the right and bottom coordinates!

    +
    Parameters
    + + + + + +
    rectLeftLeft coordinate of the rectangle
    rectTopTop coordinate of the rectangle
    rectWidthWidth of the rectangle
    rectHeightHeight of the rectangle
    +
    +
    + +
    +
    + +

    ◆ Rect() [3/4]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + +
    sf::Rect< T >::Rect (const Vector2< T > & position,
    const Vector2< T > & size 
    )
    +
    + +

    Construct the rectangle from position and size.

    +

    Be careful, the last parameter is the size, not the bottom-right corner!

    +
    Parameters
    + + + +
    positionPosition of the top-left corner of the rectangle
    sizeSize of the rectangle
    +
    +
    + +
    +
    + +

    ◆ Rect() [4/4]

    + +
    +
    +
    +template<typename T>
    +
    +template<typename U >
    + + + + + +
    + + + + + + + + +
    sf::Rect< T >::Rect (const Rect< U > & rectangle)
    +
    +explicit
    +
    + +

    Construct the rectangle from another type of rectangle.

    +

    This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

    +
    Parameters
    + + +
    rectangleRectangle to convert
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ contains() [1/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + +
    bool sf::Rect< T >::contains (x,
    y 
    ) const
    +
    + +

    Check if a point is inside the rectangle's area.

    +

    This check is non-inclusive. If the point lies on the edge of the rectangle, this function will return false.

    +
    Parameters
    + + + +
    xX coordinate of the point to test
    yY coordinate of the point to test
    +
    +
    +
    Returns
    True if the point is inside, false otherwise
    +
    See also
    intersects
    + +
    +
    + +

    ◆ contains() [2/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + +
    bool sf::Rect< T >::contains (const Vector2< T > & point) const
    +
    + +

    Check if a point is inside the rectangle's area.

    +

    This check is non-inclusive. If the point lies on the edge of the rectangle, this function will return false.

    +
    Parameters
    + + +
    pointPoint to test
    +
    +
    +
    Returns
    True if the point is inside, false otherwise
    +
    See also
    intersects
    + +
    +
    + +

    ◆ intersects() [1/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + +
    bool sf::Rect< T >::intersects (const Rect< T > & rectangle) const
    +
    + +

    Check the intersection between two rectangles.

    +
    Parameters
    + + +
    rectangleRectangle to test
    +
    +
    +
    Returns
    True if rectangles overlap, false otherwise
    +
    See also
    contains
    + +
    +
    + +

    ◆ intersects() [2/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + +
    bool sf::Rect< T >::intersects (const Rect< T > & rectangle,
    Rect< T > & intersection 
    ) const
    +
    + +

    Check the intersection between two rectangles.

    +

    This overload returns the overlapped rectangle in the intersection parameter.

    +
    Parameters
    + + + +
    rectangleRectangle to test
    intersectionRectangle to be filled with the intersection
    +
    +
    +
    Returns
    True if rectangles overlap, false otherwise
    +
    See also
    contains
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Rect< T > & left,
    const Rect< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator !=.

    +

    This operator compares strict difference between two rectangles.

    +
    Parameters
    + + + +
    leftLeft operand (a rectangle)
    rightRight operand (a rectangle)
    +
    +
    +
    Returns
    True if left is not equal to right
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Rect< T > & left,
    const Rect< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator ==.

    +

    This operator compares strict equality between two rectangles.

    +
    Parameters
    + + + +
    leftLeft operand (a rectangle)
    rightRight operand (a rectangle)
    +
    +
    +
    Returns
    True if left is equal to right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ height

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Rect< T >::height
    +
    + +

    Height of the rectangle.

    + +

    Definition at line 160 of file Rect.hpp.

    + +
    +
    + +

    ◆ left

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Rect< T >::left
    +
    + +

    Left coordinate of the rectangle.

    + +

    Definition at line 157 of file Rect.hpp.

    + +
    +
    + +

    ◆ top

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Rect< T >::top
    +
    + +

    Top coordinate of the rectangle.

    + +

    Definition at line 158 of file Rect.hpp.

    + +
    +
    + +

    ◆ width

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Rect< T >::width
    +
    + +

    Width of the rectangle.

    + +

    Definition at line 159 of file Rect.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RectangleShape-members.html b/SFML/doc/html/classsf_1_1RectangleShape-members.html new file mode 100644 index 0000000..5906488 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RectangleShape-members.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::RectangleShape Member List
    +
    +
    + +

    This is the complete list of members for sf::RectangleShape, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getFillColor() constsf::Shape
    getGlobalBounds() constsf::Shape
    getInverseTransform() constsf::Transformable
    getLocalBounds() constsf::Shape
    getOrigin() constsf::Transformable
    getOutlineColor() constsf::Shape
    getOutlineThickness() constsf::Shape
    getPoint(std::size_t index) constsf::RectangleShapevirtual
    getPointCount() constsf::RectangleShapevirtual
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getSize() constsf::RectangleShape
    getTexture() constsf::Shape
    getTextureRect() constsf::Shape
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    RectangleShape(const Vector2f &size=Vector2f(0, 0))sf::RectangleShapeexplicit
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setFillColor(const Color &color)sf::Shape
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setOutlineColor(const Color &color)sf::Shape
    setOutlineThickness(float thickness)sf::Shape
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setSize(const Vector2f &size)sf::RectangleShape
    setTexture(const Texture *texture, bool resetRect=false)sf::Shape
    setTextureRect(const IntRect &rect)sf::Shape
    Shape()sf::Shapeprotected
    Transformable()sf::Transformable
    update()sf::Shapeprotected
    ~Drawable()sf::Drawableinlinevirtual
    ~Shape()sf::Shapevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1RectangleShape.html b/SFML/doc/html/classsf_1_1RectangleShape.html new file mode 100644 index 0000000..220e332 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RectangleShape.html @@ -0,0 +1,1434 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized shape representing a rectangle. + More...

    + +

    #include <RectangleShape.hpp>

    +
    +Inheritance diagram for sf::RectangleShape:
    +
    +
    + + +sf::Shape +sf::Drawable +sf::Transformable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RectangleShape (const Vector2f &size=Vector2f(0, 0))
     Default constructor. More...
     
    void setSize (const Vector2f &size)
     Set the size of the rectangle. More...
     
    const Vector2fgetSize () const
     Get the size of the rectangle. More...
     
    virtual std::size_t getPointCount () const
     Get the number of points defining the shape. More...
     
    virtual Vector2f getPoint (std::size_t index) const
     Get a point of the rectangle. More...
     
    void setTexture (const Texture *texture, bool resetRect=false)
     Change the source texture of the shape. More...
     
    void setTextureRect (const IntRect &rect)
     Set the sub-rectangle of the texture that the shape will display. More...
     
    void setFillColor (const Color &color)
     Set the fill color of the shape. More...
     
    void setOutlineColor (const Color &color)
     Set the outline color of the shape. More...
     
    void setOutlineThickness (float thickness)
     Set the thickness of the shape's outline. More...
     
    const TexturegetTexture () const
     Get the source texture of the shape. More...
     
    const IntRectgetTextureRect () const
     Get the sub-rectangle of the texture displayed by the shape. More...
     
    const ColorgetFillColor () const
     Get the fill color of the shape. More...
     
    const ColorgetOutlineColor () const
     Get the outline color of the shape. More...
     
    float getOutlineThickness () const
     Get the outline thickness of the shape. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global (non-minimal) bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    + + + + +

    +Protected Member Functions

    void update ()
     Recompute the internal geometry of the shape. More...
     
    +

    Detailed Description

    +

    Specialized shape representing a rectangle.

    +

    This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

    +

    Usage example:

    rectangle.setSize(sf::Vector2f(100, 50));
    rectangle.setOutlineThickness(5);
    rectangle.setPosition(10, 20);
    ...
    window.draw(rectangle);
    See also
    sf::Shape, sf::CircleShape, sf::ConvexShape
    + +

    Definition at line 41 of file RectangleShape.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ RectangleShape()

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::RectangleShape::RectangleShape (const Vector2fsize = Vector2f(0, 0))
    +
    +explicit
    +
    + +

    Default constructor.

    +
    Parameters
    + + +
    sizeSize of the rectangle
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getFillColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getFillColor () const
    +
    +inherited
    +
    + +

    Get the fill color of the shape.

    +
    Returns
    Fill color of the shape
    +
    See also
    setFillColor
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getGlobalBounds () const
    +
    +inherited
    +
    + +

    Get the global (non-minimal) bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

    +

    This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + +
    + + + + + + + +
    FloatRect sf::Shape::getLocalBounds () const
    +
    +inherited
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Color& sf::Shape::getOutlineColor () const
    +
    +inherited
    +
    + +

    Get the outline color of the shape.

    +
    Returns
    Outline color of the shape
    +
    See also
    setOutlineColor
    + +
    +
    + +

    ◆ getOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Shape::getOutlineThickness () const
    +
    +inherited
    +
    + +

    Get the outline thickness of the shape.

    +
    Returns
    Outline thickness of the shape
    +
    See also
    setOutlineThickness
    + +
    +
    + +

    ◆ getPoint()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Vector2f sf::RectangleShape::getPoint (std::size_t index) const
    +
    +virtual
    +
    + +

    Get a point of the rectangle.

    +

    The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

    +
    Parameters
    + + +
    indexIndex of the point to get, in range [0 .. 3]
    +
    +
    +
    Returns
    index-th point of the shape
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPointCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::size_t sf::RectangleShape::getPointCount () const
    +
    +virtual
    +
    + +

    Get the number of points defining the shape.

    +
    Returns
    Number of points of the shape. For rectangle shapes, this number is always 4.
    + +

    Implements sf::Shape.

    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::RectangleShape::getSize () const
    +
    + +

    Get the size of the rectangle.

    +
    Returns
    Size of the rectangle
    +
    See also
    setSize
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Texture* sf::Shape::getTexture () const
    +
    +inherited
    +
    + +

    Get the source texture of the shape.

    +

    If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

    +
    Returns
    Pointer to the shape's texture
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ getTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + +
    const IntRect& sf::Shape::getTextureRect () const
    +
    +inherited
    +
    + +

    Get the sub-rectangle of the texture displayed by the shape.

    +
    Returns
    Texture rectangle of the shape
    +
    See also
    setTextureRect
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setFillColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setFillColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the fill color of the shape.

    +

    This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

    +
    Parameters
    + + +
    colorNew color of the shape
    +
    +
    +
    See also
    getFillColor, setOutlineColor
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOutlineColor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineColor (const Colorcolor)
    +
    +inherited
    +
    + +

    Set the outline color of the shape.

    +

    By default, the shape's outline color is opaque white.

    +
    Parameters
    + + +
    colorNew outline color of the shape
    +
    +
    +
    See also
    getOutlineColor, setFillColor
    + +
    +
    + +

    ◆ setOutlineThickness()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setOutlineThickness (float thickness)
    +
    +inherited
    +
    + +

    Set the thickness of the shape's outline.

    +

    Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

    +
    Parameters
    + + +
    thicknessNew outline thickness
    +
    +
    +
    See also
    getOutlineThickness
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setSize()

    + +
    +
    + + + + + + + + +
    void sf::RectangleShape::setSize (const Vector2fsize)
    +
    + +

    Set the size of the rectangle.

    +
    Parameters
    + + +
    sizeNew size of the rectangle
    +
    +
    +
    See also
    getSize
    + +
    +
    + +

    ◆ setTexture()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shape::setTexture (const Texturetexture,
    bool resetRect = false 
    )
    +
    +inherited
    +
    + +

    Change the source texture of the shape.

    +

    The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

    +
    Parameters
    + + + +
    textureNew texture
    resetRectShould the texture rect be reset to the size of the new texture?
    +
    +
    +
    See also
    getTexture, setTextureRect
    + +
    +
    + +

    ◆ setTextureRect()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Shape::setTextureRect (const IntRectrect)
    +
    +inherited
    +
    + +

    Set the sub-rectangle of the texture that the shape will display.

    +

    The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

    +
    Parameters
    + + +
    rectRectangle defining the region of the texture to display
    +
    +
    +
    See also
    getTextureRect, setTexture
    + +
    +
    + +

    ◆ update()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Shape::update ()
    +
    +protectedinherited
    +
    + +

    Recompute the internal geometry of the shape.

    +

    This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RectangleShape.png b/SFML/doc/html/classsf_1_1RectangleShape.png new file mode 100644 index 0000000000000000000000000000000000000000..59630c6f9ce886064f8366d08fa37b4b49699816 GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0vp^zks-dgBeKvyuo%9NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~Z}xO?45?szJNNap)e1ar=JMG;|Mk~I z<;Qq!ygV~G%QL-fb;l%L#eb^DByf&iNKPGn4x#L$=U&h4T1(G>&0sM*f zJ8D%{9>4W)LwtO#bh_Lo>lcnLa|`;eUXJ~IapL9qE1s9{U!vyedoOhV`3$q?rw{(M zzO(s07!DX*pvAk(EZ_vN_5qkIj-=2HAfbWXD@V*L{k9S1gy}vS>GrliE*X88uhcaq^ zioY)Xmva7W`GHA2b9>&a{xSZV)S@$a_N(@XGE;V%H1ogu?Yx=y+70$yDIEPTKOo`hwDii#V{hP;!qLgM_f^%bFP313cl=mlzk8G8o5&^DD}pJ^p*A z%HIjzE7dRleDTe+=~r#<^j1AJ#WkH9o;uX2dD`kN+Nbkj)}znomCVn3>g9qq_G0F)n@2ZFey>clPORYCzI)|M zz7@WDnPOMf@jjw<_j|8b-?yF;s|t_5{cQf1(%oCO<}Z4hwfuGJ`x4m$(@fh`|C#>C zz1lTx)#w>M3DudALe za|pIw-R&y$WN+~N^IFBOg{w}5rtkbLd+DY|=-b~X_SP-95b=(E_wl^>d#-oO&e9YS zt*hrflUlnv%eD3V{nyd2|9symD)+!QuHsPg^w+DWZxvi{(tK6ACeMeS^&#vP?BVPN pz#uty=Vc0XTq8knUSJYD@<);T3K0RUc!6{!FK literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1RenderStates-members.html b/SFML/doc/html/classsf_1_1RenderStates-members.html new file mode 100644 index 0000000..58fe9e8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderStates-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::RenderStates Member List
    +
    +
    + +

    This is the complete list of members for sf::RenderStates, including all inherited members.

    + + + + + + + + + + + + +
    blendModesf::RenderStates
    Defaultsf::RenderStatesstatic
    RenderStates()sf::RenderStates
    RenderStates(const BlendMode &theBlendMode)sf::RenderStates
    RenderStates(const Transform &theTransform)sf::RenderStates
    RenderStates(const Texture *theTexture)sf::RenderStates
    RenderStates(const Shader *theShader)sf::RenderStates
    RenderStates(const BlendMode &theBlendMode, const Transform &theTransform, const Texture *theTexture, const Shader *theShader)sf::RenderStates
    shadersf::RenderStates
    texturesf::RenderStates
    transformsf::RenderStates
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderStates.html b/SFML/doc/html/classsf_1_1RenderStates.html new file mode 100644 index 0000000..5afcc42 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderStates.html @@ -0,0 +1,409 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Define the states used for drawing to a RenderTarget. + More...

    + +

    #include <RenderStates.hpp>

    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RenderStates ()
     Default constructor. More...
     
     RenderStates (const BlendMode &theBlendMode)
     Construct a default set of render states with a custom blend mode. More...
     
     RenderStates (const Transform &theTransform)
     Construct a default set of render states with a custom transform. More...
     
     RenderStates (const Texture *theTexture)
     Construct a default set of render states with a custom texture. More...
     
     RenderStates (const Shader *theShader)
     Construct a default set of render states with a custom shader. More...
     
     RenderStates (const BlendMode &theBlendMode, const Transform &theTransform, const Texture *theTexture, const Shader *theShader)
     Construct a set of render states with all its attributes. More...
     
    + + + + + + + + + + + + + +

    +Public Attributes

    BlendMode blendMode
     Blending mode. More...
     
    Transform transform
     Transform. More...
     
    const Texturetexture
     Texture. More...
     
    const Shadershader
     Shader. More...
     
    + + + + +

    +Static Public Attributes

    static const RenderStates Default
     Special instance holding the default render states. More...
     
    +

    Detailed Description

    +

    Define the states used for drawing to a RenderTarget.

    +

    There are four global states that can be applied to the drawn objects:

    +
      +
    • the blend mode: how pixels of the object are blended with the background
    • +
    • the transform: how the object is positioned/rotated/scaled
    • +
    • the texture: what image is mapped to the object
    • +
    • the shader: what custom effect is applied to the object
    • +
    +

    High-level objects such as sprites or text force some of these states when they are drawn. For example, a sprite will set its own texture, so that you don't have to care about it when drawing the sprite.

    +

    The transform is a special case: sprites, texts and shapes (and it's a good idea to do it with your own drawable classes too) combine their transform with the one that is passed in the RenderStates structure. So that you can use a "global" transform on top of each object's transform.

    +

    Most objects, especially high-level drawables, can be drawn directly without defining render states explicitly – the default set of states is ok in most cases.

    window.draw(sprite);

    If you want to use a single specific render state, for example a shader, you can pass it directly to the Draw function: sf::RenderStates has an implicit one-argument constructor for each state.

    window.draw(sprite, shader);

    When you're inside the Draw function of a drawable object (inherited from sf::Drawable), you can either pass the render states unmodified, or change some of them. For example, a transformable object will combine the current transform with its own transform. A sprite will set its texture. Etc.

    +
    See also
    sf::RenderTarget, sf::Drawable
    + +

    Definition at line 45 of file RenderStates.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ RenderStates() [1/6]

    + +
    +
    + + + + + + + +
    sf::RenderStates::RenderStates ()
    +
    + +

    Default constructor.

    +

    Constructing a default set of render states is equivalent to using sf::RenderStates::Default. The default set defines:

      +
    • the BlendAlpha blend mode
    • +
    • the identity transform
    • +
    • a null texture
    • +
    • a null shader
    • +
    + +
    +
    + +

    ◆ RenderStates() [2/6]

    + +
    +
    + + + + + + + + +
    sf::RenderStates::RenderStates (const BlendModetheBlendMode)
    +
    + +

    Construct a default set of render states with a custom blend mode.

    +
    Parameters
    + + +
    theBlendModeBlend mode to use
    +
    +
    + +
    +
    + +

    ◆ RenderStates() [3/6]

    + +
    +
    + + + + + + + + +
    sf::RenderStates::RenderStates (const TransformtheTransform)
    +
    + +

    Construct a default set of render states with a custom transform.

    +
    Parameters
    + + +
    theTransformTransform to use
    +
    +
    + +
    +
    + +

    ◆ RenderStates() [4/6]

    + +
    +
    + + + + + + + + +
    sf::RenderStates::RenderStates (const TexturetheTexture)
    +
    + +

    Construct a default set of render states with a custom texture.

    +
    Parameters
    + + +
    theTextureTexture to use
    +
    +
    + +
    +
    + +

    ◆ RenderStates() [5/6]

    + +
    +
    + + + + + + + + +
    sf::RenderStates::RenderStates (const ShadertheShader)
    +
    + +

    Construct a default set of render states with a custom shader.

    +
    Parameters
    + + +
    theShaderShader to use
    +
    +
    + +
    +
    + +

    ◆ RenderStates() [6/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::RenderStates::RenderStates (const BlendModetheBlendMode,
    const TransformtheTransform,
    const TexturetheTexture,
    const ShadertheShader 
    )
    +
    + +

    Construct a set of render states with all its attributes.

    +
    Parameters
    + + + + + +
    theBlendModeBlend mode to use
    theTransformTransform to use
    theTextureTexture to use
    theShaderShader to use
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ blendMode

    + +
    +
    + + + + +
    BlendMode sf::RenderStates::blendMode
    +
    + +

    Blending mode.

    + +

    Definition at line 115 of file RenderStates.hpp.

    + +
    +
    + +

    ◆ Default

    + +
    +
    + + + + + +
    + + + + +
    const RenderStates sf::RenderStates::Default
    +
    +static
    +
    + +

    Special instance holding the default render states.

    + +

    Definition at line 110 of file RenderStates.hpp.

    + +
    +
    + +

    ◆ shader

    + +
    +
    + + + + +
    const Shader* sf::RenderStates::shader
    +
    + +

    Shader.

    + +

    Definition at line 118 of file RenderStates.hpp.

    + +
    +
    + +

    ◆ texture

    + +
    +
    + + + + +
    const Texture* sf::RenderStates::texture
    +
    + +

    Texture.

    + +

    Definition at line 117 of file RenderStates.hpp.

    + +
    +
    + +

    ◆ transform

    + +
    +
    + + + + +
    Transform sf::RenderStates::transform
    +
    + +

    Transform.

    + +

    Definition at line 116 of file RenderStates.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderTarget-members.html b/SFML/doc/html/classsf_1_1RenderTarget-members.html new file mode 100644 index 0000000..2d4dfdb --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderTarget-members.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::RenderTarget Member List
    +
    +
    + +

    This is the complete list of members for sf::RenderTarget, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
    draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    getDefaultView() constsf::RenderTarget
    getSize() const =0sf::RenderTargetpure virtual
    getView() constsf::RenderTarget
    getViewport(const View &view) constsf::RenderTarget
    initialize()sf::RenderTargetprotected
    mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
    mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
    NonCopyable()sf::NonCopyableinlineprivate
    popGLStates()sf::RenderTarget
    pushGLStates()sf::RenderTarget
    RenderTarget()sf::RenderTargetprotected
    resetGLStates()sf::RenderTarget
    setActive(bool active=true)sf::RenderTargetvirtual
    setView(const View &view)sf::RenderTarget
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~RenderTarget()sf::RenderTargetvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderTarget.html b/SFML/doc/html/classsf_1_1RenderTarget.html new file mode 100644 index 0000000..867e9cb --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderTarget.html @@ -0,0 +1,822 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::RenderTarget Class Referenceabstract
    +
    +
    + +

    Base class for all render targets (window, texture, ...) + More...

    + +

    #include <RenderTarget.hpp>

    +
    +Inheritance diagram for sf::RenderTarget:
    +
    +
    + + +sf::NonCopyable +sf::RenderTexture +sf::RenderWindow + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~RenderTarget ()
     Destructor. More...
     
    void clear (const Color &color=Color(0, 0, 0, 255))
     Clear the entire target with a single color. More...
     
    void setView (const View &view)
     Change the current active view. More...
     
    const ViewgetView () const
     Get the view currently in use in the render target. More...
     
    const ViewgetDefaultView () const
     Get the default view of the render target. More...
     
    IntRect getViewport (const View &view) const
     Get the viewport of a view, applied to this render target. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point) const
     Convert a point from target coordinates to world coordinates, using the current view. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
     Convert a point from target coordinates to world coordinates. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point) const
     Convert a point from world coordinates to target coordinates, using the current view. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
     Convert a point from world coordinates to target coordinates. More...
     
    void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
     Draw a drawable object to the render target. More...
     
    void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by an array of vertices. More...
     
    void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    virtual Vector2u getSize () const =0
     Return the size of the rendering region of the target. More...
     
    virtual bool setActive (bool active=true)
     Activate or deactivate the render target for rendering. More...
     
    void pushGLStates ()
     Save the current OpenGL render states and matrices. More...
     
    void popGLStates ()
     Restore the previously saved OpenGL render states and matrices. More...
     
    void resetGLStates ()
     Reset the internal OpenGL states so that the target is ready for drawing. More...
     
    + + + + + + + +

    +Protected Member Functions

     RenderTarget ()
     Default constructor. More...
     
    void initialize ()
     Performs the common initialization step after creation. More...
     
    +

    Detailed Description

    +

    Base class for all render targets (window, texture, ...)

    +

    sf::RenderTarget defines the common behavior of all the 2D render targets usable in the graphics module.

    +

    It makes it possible to draw 2D entities like sprites, shapes, text without using any OpenGL command directly.

    +

    A sf::RenderTarget is also able to use views (sf::View), which are a kind of 2D cameras. With views you can globally scroll, rotate or zoom everything that is drawn, without having to transform every single entity. See the documentation of sf::View for more details and sample pieces of code about this class.

    +

    On top of that, render targets are still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands. When doing so, make sure that OpenGL states are not messed up by calling the pushGLStates/popGLStates functions.

    +
    See also
    sf::RenderWindow, sf::RenderTexture, sf::View
    + +

    Definition at line 52 of file RenderTarget.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~RenderTarget()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::RenderTarget::~RenderTarget ()
    +
    +virtual
    +
    + +

    Destructor.

    + +
    +
    + +

    ◆ RenderTarget()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::RenderTarget::RenderTarget ()
    +
    +protected
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ clear()

    + +
    +
    + + + + + + + + +
    void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
    +
    + +

    Clear the entire target with a single color.

    +

    This function is usually called once every frame, to clear the previous contents of the target.

    +
    Parameters
    + + +
    colorFill color to use to clear the render target
    +
    +
    + +
    +
    + +

    ◆ draw() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Drawabledrawable,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    + +

    Draw a drawable object to the render target.

    +
    Parameters
    + + + +
    drawableObject to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Vertexvertices,
    std::size_t vertexCount,
    PrimitiveType type,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    + +

    Draw primitives defined by an array of vertices.

    +
    Parameters
    + + + + + +
    verticesPointer to the vertices
    vertexCountNumber of vertices in the array
    typeType of primitives to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + +
    vertexBufferVertex buffer
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    std::size_t firstVertex,
    std::size_t vertexCount,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + + + +
    vertexBufferVertex buffer
    firstVertexIndex of the first vertex to render
    vertexCountNumber of vertices to render
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ getDefaultView()

    + +
    +
    + + + + + + + +
    const View& sf::RenderTarget::getDefaultView () const
    +
    + +

    Get the default view of the render target.

    +

    The default view has the initial size of the render target, and never changes after the target has been created.

    +
    Returns
    The default view of the render target
    +
    See also
    setView, getView
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Vector2u sf::RenderTarget::getSize () const
    +
    +pure virtual
    +
    + +

    Return the size of the rendering region of the target.

    +
    Returns
    Size in pixels
    + +

    Implemented in sf::RenderTexture, and sf::RenderWindow.

    + +
    +
    + +

    ◆ getView()

    + +
    +
    + + + + + + + +
    const View& sf::RenderTarget::getView () const
    +
    + +

    Get the view currently in use in the render target.

    +
    Returns
    The view object that is currently used
    +
    See also
    setView, getDefaultView
    + +
    +
    + +

    ◆ getViewport()

    + +
    +
    + + + + + + + + +
    IntRect sf::RenderTarget::getViewport (const Viewview) const
    +
    + +

    Get the viewport of a view, applied to this render target.

    +

    The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

    +
    Parameters
    + + +
    viewThe view for which we want to compute the viewport
    +
    +
    +
    Returns
    Viewport rectangle, expressed in pixels
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::initialize ()
    +
    +protected
    +
    + +

    Performs the common initialization step after creation.

    +

    The derived classes must call this function after the target is created and ready for drawing.

    + +
    +
    + +

    ◆ mapCoordsToPixel() [1/2]

    + +
    +
    + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
    +
    + +

    Convert a point from world coordinates to target coordinates, using the current view.

    +

    This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

    target.mapCoordsToPixel(point, target.getView());
    Parameters
    + + +
    pointPoint to convert
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapCoordsToPixel() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
    const Viewview 
    ) const
    +
    + +

    Convert a point from world coordinates to target coordinates.

    +

    This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPoint to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapPixelToCoords() [1/2]

    + +
    +
    + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
    +
    + +

    Convert a point from target coordinates to world coordinates, using the current view.

    +

    This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

    target.mapPixelToCoords(point, target.getView());
    Parameters
    + + +
    pointPixel to convert
    +
    +
    +
    Returns
    The converted point, in "world" coordinates
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ mapPixelToCoords() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
    const Viewview 
    ) const
    +
    + +

    Convert a point from target coordinates to world coordinates.

    +

    This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

    +

    For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPixel to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in "world" units
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ popGLStates()

    + +
    +
    + + + + + + + +
    void sf::RenderTarget::popGLStates ()
    +
    + +

    Restore the previously saved OpenGL render states and matrices.

    +

    See the description of pushGLStates to get a detailed description of these functions.

    +
    See also
    pushGLStates
    + +
    +
    + +

    ◆ pushGLStates()

    + +
    +
    + + + + + + + +
    void sf::RenderTarget::pushGLStates ()
    +
    + +

    Save the current OpenGL render states and matrices.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

      +
    • SFML's internal states are not messed up by your OpenGL code
    • +
    • your OpenGL states are not modified by a call to a SFML function
    • +
    +

    More specifically, it must be used around code that calls Draw functions. Example:

    // OpenGL code here...
    window.pushGLStates();
    window.draw(...);
    window.draw(...);
    window.popGLStates();
    // OpenGL code here...

    Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

    +
    See also
    popGLStates
    + +
    +
    + +

    ◆ resetGLStates()

    + +
    +
    + + + + + + + +
    void sf::RenderTarget::resetGLStates ()
    +
    + +

    Reset the internal OpenGL states so that the target is ready for drawing.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

    +

    Example:

    // OpenGL code here...
    glPushAttrib(...);
    window.resetGLStates();
    window.draw(...);
    window.draw(...);
    glPopAttrib(...);
    // OpenGL code here...
    +
    +
    + +

    ◆ setActive()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual bool sf::RenderTarget::setActive (bool active = true)
    +
    +virtual
    +
    + +

    Activate or deactivate the render target for rendering.

    +

    This function makes the render target's context current for future OpenGL rendering operations (so you shouldn't care about it if you're not doing direct OpenGL stuff). A render target's context is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one context can be current in a thread, so if you want to draw OpenGL geometry to another render target don't forget to activate it again. Activating a render target will automatically deactivate the previously active context (if any).

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True if operation was successful, false otherwise
    + +

    Reimplemented in sf::RenderTexture, and sf::RenderWindow.

    + +
    +
    + +

    ◆ setView()

    + +
    +
    + + + + + + + + +
    void sf::RenderTarget::setView (const Viewview)
    +
    + +

    Change the current active view.

    +

    The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

    +
    Parameters
    + + +
    viewNew view to use
    +
    +
    +
    See also
    getView, getDefaultView
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderTarget.png b/SFML/doc/html/classsf_1_1RenderTarget.png new file mode 100644 index 0000000000000000000000000000000000000000..3f29acb2b6509713d367b6d0292d841e3c1963b8 GIT binary patch literal 1080 zcmV-81jqY{P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d000BWNklMvBG(HGdFL8v&cSF<3rD{bUlBhgjlvbyp@~p&zWTN!qxtpve`$v@!Yaim#(e+ zuI%$L&uwdh`8Ye#fU+)sDQk~-wF759vv%s%jk-?b{CF0!XFs#qRE^qp!e*UX4BnW3 z|84$v?rAJZ2gur5l3p^1>|3sb$iC0`Rdw0E#?WJS^E`-+=U_`vK03+g+1sD;pEWn6(WdTOSD+@3pURi(<@yY^> zh*uV1M7**9BjS|>7!j{5z=(WhWv6MHx&rVidN1y>06lP7fJV41Ko9E0o_X~5 zF>C&IF4+{AuQng<#Z3SeXOw+Z$CN0_K4a5T^ZR=WKBDnkY{+KWvY$ov@mPypyt0uP zU9J|Jd|%c*%d$>b*`+-BSxgd}ALUIpd}`TemGX{TTCu3ovo%e6Y~xZk-Fm(Ol|7hk z(dxuOk5UVL|hhNL|hhNL|hi&q}*<|+ou5N$_I<%vH;C+S%CJqEI>0{7N9*Y3(yRg z1!#}U0yM*A0ovoT0L}PH*$_fF!Yzalj_}E)gCupt%1Tm4Tvn2r;j)s{o@>iaQ@ptU zNK!=}o%71f?Hgaq{`Jc9uM5R9Nm5NIo6_d1&AX~#opnI=z{*Bel6n0u``AshrE$q; zY+82y{+@!5X#DOuwB)Q=Yl`{a4cVhB=at>c%eN!Ru6Nig8;Q~EOHviGJBt*%{k81z zmGe6{@?Oa1&9s~xb1140d(*~KXp%B^We=|WEbps4vwc+?7bjcHOrvy#*pmzAVu yxU3|#$7Lm{87?bH?YWw42qE;u$c7L?PyPU+G)BG*P&1qW0000 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::RenderTexture Member List
    +
    +
    + +

    This is the complete list of members for sf::RenderTexture, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
    create(unsigned int width, unsigned int height, bool depthBuffer)sf::RenderTexture
    create(unsigned int width, unsigned int height, const ContextSettings &settings=ContextSettings())sf::RenderTexture
    display()sf::RenderTexture
    draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    generateMipmap()sf::RenderTexture
    getDefaultView() constsf::RenderTarget
    getMaximumAntialiasingLevel()sf::RenderTexturestatic
    getSize() constsf::RenderTexturevirtual
    getTexture() constsf::RenderTexture
    getView() constsf::RenderTarget
    getViewport(const View &view) constsf::RenderTarget
    initialize()sf::RenderTargetprotected
    isRepeated() constsf::RenderTexture
    isSmooth() constsf::RenderTexture
    mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
    mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
    popGLStates()sf::RenderTarget
    pushGLStates()sf::RenderTarget
    RenderTarget()sf::RenderTargetprotected
    RenderTexture()sf::RenderTexture
    resetGLStates()sf::RenderTarget
    setActive(bool active=true)sf::RenderTexturevirtual
    setRepeated(bool repeated)sf::RenderTexture
    setSmooth(bool smooth)sf::RenderTexture
    setView(const View &view)sf::RenderTarget
    ~RenderTarget()sf::RenderTargetvirtual
    ~RenderTexture()sf::RenderTexturevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderTexture.html b/SFML/doc/html/classsf_1_1RenderTexture.html new file mode 100644 index 0000000..fda80b0 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderTexture.html @@ -0,0 +1,1264 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Target for off-screen 2D rendering into a texture. + More...

    + +

    #include <RenderTexture.hpp>

    +
    +Inheritance diagram for sf::RenderTexture:
    +
    +
    + + +sf::RenderTarget +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RenderTexture ()
     Default constructor. More...
     
    virtual ~RenderTexture ()
     Destructor. More...
     
    bool create (unsigned int width, unsigned int height, bool depthBuffer)
     Create the render-texture. More...
     
    bool create (unsigned int width, unsigned int height, const ContextSettings &settings=ContextSettings())
     Create the render-texture. More...
     
    void setSmooth (bool smooth)
     Enable or disable texture smoothing. More...
     
    bool isSmooth () const
     Tell whether the smooth filtering is enabled or not. More...
     
    void setRepeated (bool repeated)
     Enable or disable texture repeating. More...
     
    bool isRepeated () const
     Tell whether the texture is repeated or not. More...
     
    bool generateMipmap ()
     Generate a mipmap using the current texture data. More...
     
    bool setActive (bool active=true)
     Activate or deactivate the render-texture for rendering. More...
     
    void display ()
     Update the contents of the target texture. More...
     
    virtual Vector2u getSize () const
     Return the size of the rendering region of the texture. More...
     
    const TexturegetTexture () const
     Get a read-only reference to the target texture. More...
     
    void clear (const Color &color=Color(0, 0, 0, 255))
     Clear the entire target with a single color. More...
     
    void setView (const View &view)
     Change the current active view. More...
     
    const ViewgetView () const
     Get the view currently in use in the render target. More...
     
    const ViewgetDefaultView () const
     Get the default view of the render target. More...
     
    IntRect getViewport (const View &view) const
     Get the viewport of a view, applied to this render target. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point) const
     Convert a point from target coordinates to world coordinates, using the current view. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
     Convert a point from target coordinates to world coordinates. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point) const
     Convert a point from world coordinates to target coordinates, using the current view. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
     Convert a point from world coordinates to target coordinates. More...
     
    void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
     Draw a drawable object to the render target. More...
     
    void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by an array of vertices. More...
     
    void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    void pushGLStates ()
     Save the current OpenGL render states and matrices. More...
     
    void popGLStates ()
     Restore the previously saved OpenGL render states and matrices. More...
     
    void resetGLStates ()
     Reset the internal OpenGL states so that the target is ready for drawing. More...
     
    + + + + +

    +Static Public Member Functions

    static unsigned int getMaximumAntialiasingLevel ()
     Get the maximum anti-aliasing level supported by the system. More...
     
    + + + + +

    +Protected Member Functions

    void initialize ()
     Performs the common initialization step after creation. More...
     
    +

    Detailed Description

    +

    Target for off-screen 2D rendering into a texture.

    +

    sf::RenderTexture is the little brother of sf::RenderWindow.

    +

    It implements the same 2D drawing and OpenGL-related functions (see their base class sf::RenderTarget for more details), the difference is that the result is stored in an off-screen texture rather than being show in a window.

    +

    Rendering to a texture can be useful in a variety of situations:

      +
    • precomputing a complex static texture (like a level's background from multiple tiles)
    • +
    • applying post-effects to the whole scene with shaders
    • +
    • creating a sprite from a 3D object rendered with OpenGL
    • +
    • etc.
    • +
    +

    Usage example:

    +
    // Create a new render-window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    // Create a new render-texture
    if (!texture.create(500, 500))
    return -1;
    // The main loop
    while (window.isOpen())
    {
    // Event processing
    // ...
    // Clear the whole texture with red color
    // Draw stuff to the texture
    texture.draw(sprite); // sprite is a sf::Sprite
    texture.draw(shape); // shape is a sf::Shape
    texture.draw(text); // text is a sf::Text
    // We're done drawing to the texture
    texture.display();
    // Now we start rendering to the window, clear it first
    window.clear();
    // Draw the texture
    sf::Sprite sprite(texture.getTexture());
    window.draw(sprite);
    // End the current frame and display its contents on screen
    window.display();
    }

    Like sf::RenderWindow, sf::RenderTexture is still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands. If you need a depth buffer for 3D rendering, don't forget to request it when calling RenderTexture::create.

    +
    See also
    sf::RenderTarget, sf::RenderWindow, sf::View, sf::Texture
    + +

    Definition at line 48 of file RenderTexture.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ RenderTexture()

    + +
    +
    + + + + + + + +
    sf::RenderTexture::RenderTexture ()
    +
    + +

    Default constructor.

    +

    Constructs an empty, invalid render-texture. You must call create to have a valid render-texture.

    +
    See also
    create
    + +
    +
    + +

    ◆ ~RenderTexture()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::RenderTexture::~RenderTexture ()
    +
    +virtual
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ clear()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
    +
    +inherited
    +
    + +

    Clear the entire target with a single color.

    +

    This function is usually called once every frame, to clear the previous contents of the target.

    +
    Parameters
    + + +
    colorFill color to use to clear the render target
    +
    +
    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::RenderTexture::create (unsigned int width,
    unsigned int height,
    bool depthBuffer 
    )
    +
    + +

    Create the render-texture.

    +

    Before calling this function, the render-texture is in an invalid state, thus it is mandatory to call it before doing anything with the render-texture. The last parameter, depthBuffer, is useful if you want to use the render-texture for 3D OpenGL rendering that requires a depth buffer. Otherwise it is unnecessary, and you should leave this parameter to false (which is its default value).

    +
    Parameters
    + + + + +
    widthWidth of the render-texture
    heightHeight of the render-texture
    depthBufferDo you want this render-texture to have a depth buffer?
    +
    +
    +
    Returns
    True if creation has been successful
    +
    Deprecated:
    Use create(unsigned int, unsigned int, const ContextSettings&) instead.
    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::RenderTexture::create (unsigned int width,
    unsigned int height,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    + +

    Create the render-texture.

    +

    Before calling this function, the render-texture is in an invalid state, thus it is mandatory to call it before doing anything with the render-texture. The last parameter, settings, is useful if you want to enable multi-sampling or use the render-texture for OpenGL rendering that requires a depth or stencil buffer. Otherwise it is unnecessary, and you should leave this parameter at its default value.

    +
    Parameters
    + + + + +
    widthWidth of the render-texture
    heightHeight of the render-texture
    settingsAdditional settings for the underlying OpenGL texture and context
    +
    +
    +
    Returns
    True if creation has been successful
    + +
    +
    + +

    ◆ display()

    + +
    +
    + + + + + + + +
    void sf::RenderTexture::display ()
    +
    + +

    Update the contents of the target texture.

    +

    This function updates the target texture with what has been drawn so far. Like for windows, calling this function is mandatory at the end of rendering. Not calling it may leave the texture in an undefined state.

    + +
    +
    + +

    ◆ draw() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Drawabledrawable,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw a drawable object to the render target.

    +
    Parameters
    + + + +
    drawableObject to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Vertexvertices,
    std::size_t vertexCount,
    PrimitiveType type,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by an array of vertices.

    +
    Parameters
    + + + + + +
    verticesPointer to the vertices
    vertexCountNumber of vertices in the array
    typeType of primitives to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + +
    vertexBufferVertex buffer
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    std::size_t firstVertex,
    std::size_t vertexCount,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + + + +
    vertexBufferVertex buffer
    firstVertexIndex of the first vertex to render
    vertexCountNumber of vertices to render
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ generateMipmap()

    + +
    +
    + + + + + + + +
    bool sf::RenderTexture::generateMipmap ()
    +
    + +

    Generate a mipmap using the current texture data.

    +

    This function is similar to Texture::generateMipmap and operates on the texture used as the target for drawing. Be aware that any draw operation may modify the base level image data. For this reason, calling this function only makes sense after all drawing is completed and display has been called. Not calling display after subsequent drawing will lead to undefined behavior if a mipmap had been previously generated.

    +
    Returns
    True if mipmap generation was successful, false if unsuccessful
    + +
    +
    + +

    ◆ getDefaultView()

    + +
    +
    + + + + + +
    + + + + + + + +
    const View& sf::RenderTarget::getDefaultView () const
    +
    +inherited
    +
    + +

    Get the default view of the render target.

    +

    The default view has the initial size of the render target, and never changes after the target has been created.

    +
    Returns
    The default view of the render target
    +
    See also
    setView, getView
    + +
    +
    + +

    ◆ getMaximumAntialiasingLevel()

    + +
    +
    + + + + + +
    + + + + + + + +
    static unsigned int sf::RenderTexture::getMaximumAntialiasingLevel ()
    +
    +static
    +
    + +

    Get the maximum anti-aliasing level supported by the system.

    +
    Returns
    The maximum anti-aliasing level supported by the system
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Vector2u sf::RenderTexture::getSize () const
    +
    +virtual
    +
    + +

    Return the size of the rendering region of the texture.

    +

    The returned value is the size that you passed to the create function.

    +
    Returns
    Size in pixels
    + +

    Implements sf::RenderTarget.

    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + + + +
    const Texture& sf::RenderTexture::getTexture () const
    +
    + +

    Get a read-only reference to the target texture.

    +

    After drawing to the render-texture and calling Display, you can retrieve the updated texture using this function, and draw it using a sprite (for example). The internal sf::Texture of a render-texture is always the same instance, so that it is possible to call this function once and keep a reference to the texture even after it is modified.

    +
    Returns
    Const reference to the texture
    + +
    +
    + +

    ◆ getView()

    + +
    +
    + + + + + +
    + + + + + + + +
    const View& sf::RenderTarget::getView () const
    +
    +inherited
    +
    + +

    Get the view currently in use in the render target.

    +
    Returns
    The view object that is currently used
    +
    See also
    setView, getDefaultView
    + +
    +
    + +

    ◆ getViewport()

    + +
    +
    + + + + + +
    + + + + + + + + +
    IntRect sf::RenderTarget::getViewport (const Viewview) const
    +
    +inherited
    +
    + +

    Get the viewport of a view, applied to this render target.

    +

    The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

    +
    Parameters
    + + +
    viewThe view for which we want to compute the viewport
    +
    +
    +
    Returns
    Viewport rectangle, expressed in pixels
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::initialize ()
    +
    +protectedinherited
    +
    + +

    Performs the common initialization step after creation.

    +

    The derived classes must call this function after the target is created and ready for drawing.

    + +
    +
    + +

    ◆ isRepeated()

    + +
    +
    + + + + + + + +
    bool sf::RenderTexture::isRepeated () const
    +
    + +

    Tell whether the texture is repeated or not.

    +
    Returns
    True if texture is repeated
    +
    See also
    setRepeated
    + +
    +
    + +

    ◆ isSmooth()

    + +
    +
    + + + + + + + +
    bool sf::RenderTexture::isSmooth () const
    +
    + +

    Tell whether the smooth filtering is enabled or not.

    +
    Returns
    True if texture smoothing is enabled
    +
    See also
    setSmooth
    + +
    +
    + +

    ◆ mapCoordsToPixel() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
    +
    +inherited
    +
    + +

    Convert a point from world coordinates to target coordinates, using the current view.

    +

    This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

    target.mapCoordsToPixel(point, target.getView());
    Parameters
    + + +
    pointPoint to convert
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapCoordsToPixel() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
    const Viewview 
    ) const
    +
    +inherited
    +
    + +

    Convert a point from world coordinates to target coordinates.

    +

    This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPoint to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapPixelToCoords() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
    +
    +inherited
    +
    + +

    Convert a point from target coordinates to world coordinates, using the current view.

    +

    This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

    target.mapPixelToCoords(point, target.getView());
    Parameters
    + + +
    pointPixel to convert
    +
    +
    +
    Returns
    The converted point, in "world" coordinates
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ mapPixelToCoords() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
    const Viewview 
    ) const
    +
    +inherited
    +
    + +

    Convert a point from target coordinates to world coordinates.

    +

    This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

    +

    For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPixel to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in "world" units
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ popGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::popGLStates ()
    +
    +inherited
    +
    + +

    Restore the previously saved OpenGL render states and matrices.

    +

    See the description of pushGLStates to get a detailed description of these functions.

    +
    See also
    pushGLStates
    + +
    +
    + +

    ◆ pushGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::pushGLStates ()
    +
    +inherited
    +
    + +

    Save the current OpenGL render states and matrices.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

      +
    • SFML's internal states are not messed up by your OpenGL code
    • +
    • your OpenGL states are not modified by a call to a SFML function
    • +
    +

    More specifically, it must be used around code that calls Draw functions. Example:

    // OpenGL code here...
    window.pushGLStates();
    window.draw(...);
    window.draw(...);
    window.popGLStates();
    // OpenGL code here...

    Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

    +
    See also
    popGLStates
    + +
    +
    + +

    ◆ resetGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::resetGLStates ()
    +
    +inherited
    +
    + +

    Reset the internal OpenGL states so that the target is ready for drawing.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

    +

    Example:

    // OpenGL code here...
    glPushAttrib(...);
    window.resetGLStates();
    window.draw(...);
    window.draw(...);
    glPopAttrib(...);
    // OpenGL code here...
    +
    +
    + +

    ◆ setActive()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::RenderTexture::setActive (bool active = true)
    +
    +virtual
    +
    + +

    Activate or deactivate the render-texture for rendering.

    +

    This function makes the render-texture's context current for future OpenGL rendering operations (so you shouldn't care about it if you're not doing direct OpenGL stuff). Only one context can be current in a thread, so if you want to draw OpenGL geometry to another render target (like a RenderWindow) don't forget to activate it again.

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True if operation was successful, false otherwise
    + +

    Reimplemented from sf::RenderTarget.

    + +
    +
    + +

    ◆ setRepeated()

    + +
    +
    + + + + + + + + +
    void sf::RenderTexture::setRepeated (bool repeated)
    +
    + +

    Enable or disable texture repeating.

    +

    This function is similar to Texture::setRepeated. This parameter is disabled by default.

    +
    Parameters
    + + +
    repeatedTrue to enable repeating, false to disable it
    +
    +
    +
    See also
    isRepeated
    + +
    +
    + +

    ◆ setSmooth()

    + +
    +
    + + + + + + + + +
    void sf::RenderTexture::setSmooth (bool smooth)
    +
    + +

    Enable or disable texture smoothing.

    +

    This function is similar to Texture::setSmooth. This parameter is disabled by default.

    +
    Parameters
    + + +
    smoothTrue to enable smoothing, false to disable it
    +
    +
    +
    See also
    isSmooth
    + +
    +
    + +

    ◆ setView()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::RenderTarget::setView (const Viewview)
    +
    +inherited
    +
    + +

    Change the current active view.

    +

    The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

    +
    Parameters
    + + +
    viewNew view to use
    +
    +
    +
    See also
    getView, getDefaultView
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderTexture.png b/SFML/doc/html/classsf_1_1RenderTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac1289279224434963a4efdd2621a9acf2b7f38 GIT binary patch literal 814 zcmV+}1JV46P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0008LNklT?amiwN#(f3djL%6VRzrP8@K1vkn{BBuCFVG^&wU~AATD`m**~J;Y(gquCu0hc}HXS`Wd5}u4-QFc7MsU?QVj2 z(LXzfZN<*{^sTCRH~Q!1ER*fbxsp|*nEkh>{qN;`O41kP>MKdlG>~@(H;{J=xBeeV z(m?$JUW_r$6TnyW0WeXMc^@Bhfs=U~ZYpp#4`8l-c6KX2fOpo)58!>Z@&kBZt^5Gq zS1Uh&_tnY|praULoG79sP1E8@(m4GGyb$uu_K~DU-n#o;c-HGT+X{_^{>;t;u?sJuUC?CIRxDwPb6$OB?#o&aj;I7?jngmS#Ter}0enTD024Kt_xU*& zIGMNMrUGa4e*Anc9>72?9>6#)9>6#)9>6#)9>6#)9>6#)9>6#)9zaJSgfLMAfN5Gh zfN}b6-ZnsHYyle83p$?HIaIvzu-|ppHOAKK4(}182{iK#+vayzjs?jvJ)DW2tIn@k zT4?vpyu&$p<(0*ft>?A})`tec9NDD=<#@iHsVill_F@;g5Gt1*FFTrgrplQRbG9WI zQ^ZSNnJ7CiXBA!0CVh{sic+_wliNlATApw0vwD^(N}f0B>E|WSXKs(1PjfEwnP$Ck sI`auIL5l}4PKyUHPT#-_A%uDQ0|j3#Z31>}RsaA107*qoM6N<$g72J){r~^~ literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1RenderWindow-members.html b/SFML/doc/html/classsf_1_1RenderWindow-members.html new file mode 100644 index 0000000..f5b2299 --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderWindow-members.html @@ -0,0 +1,120 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::RenderWindow Member List
    +
    +
    + +

    This is the complete list of members for sf::RenderWindow, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    capture() constsf::RenderWindow
    clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
    close()sf::Window
    create(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
    create(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Window
    display()sf::Window
    draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
    getDefaultView() constsf::RenderTarget
    getPosition() constsf::Window
    getSettings() constsf::Window
    getSize() constsf::RenderWindowvirtual
    getSystemHandle() constsf::Window
    getView() constsf::RenderTarget
    getViewport(const View &view) constsf::RenderTarget
    hasFocus() constsf::Window
    initialize()sf::RenderTargetprotected
    isOpen() constsf::Window
    mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
    mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
    mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
    NonCopyable()sf::NonCopyableinlineprotected
    onCreate()sf::RenderWindowprotectedvirtual
    onResize()sf::RenderWindowprotectedvirtual
    pollEvent(Event &event)sf::Window
    popGLStates()sf::RenderTarget
    pushGLStates()sf::RenderTarget
    RenderTarget()sf::RenderTargetprotected
    RenderWindow()sf::RenderWindow
    RenderWindow(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::RenderWindow
    RenderWindow(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::RenderWindowexplicit
    requestFocus()sf::Window
    resetGLStates()sf::RenderTarget
    setActive(bool active=true)sf::RenderWindowvirtual
    sf::Window::setActive(bool active=true) constsf::Window
    setFramerateLimit(unsigned int limit)sf::Window
    setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Window
    setJoystickThreshold(float threshold)sf::Window
    setKeyRepeatEnabled(bool enabled)sf::Window
    setMouseCursor(const Cursor &cursor)sf::Window
    setMouseCursorGrabbed(bool grabbed)sf::Window
    setMouseCursorVisible(bool visible)sf::Window
    setPosition(const Vector2i &position)sf::Window
    setSize(const Vector2u &size)sf::Window
    setTitle(const String &title)sf::Window
    setVerticalSyncEnabled(bool enabled)sf::Window
    setView(const View &view)sf::RenderTarget
    setVisible(bool visible)sf::Window
    waitEvent(Event &event)sf::Window
    Window()sf::Window
    Window(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
    Window(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Windowexplicit
    ~NonCopyable()sf::NonCopyableinlineprotected
    ~RenderTarget()sf::RenderTargetvirtual
    ~RenderWindow()sf::RenderWindowvirtual
    ~Window()sf::Windowvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderWindow.html b/SFML/doc/html/classsf_1_1RenderWindow.html new file mode 100644 index 0000000..4b79f2d --- /dev/null +++ b/SFML/doc/html/classsf_1_1RenderWindow.html @@ -0,0 +1,2116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Window that can serve as a target for 2D drawing. + More...

    + +

    #include <RenderWindow.hpp>

    +
    +Inheritance diagram for sf::RenderWindow:
    +
    +
    + + +sf::Window +sf::RenderTarget +sf::GlResource +sf::NonCopyable +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RenderWindow ()
     Default constructor. More...
     
     RenderWindow (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
     Construct a new window. More...
     
     RenderWindow (WindowHandle handle, const ContextSettings &settings=ContextSettings())
     Construct the window from an existing control. More...
     
    virtual ~RenderWindow ()
     Destructor. More...
     
    virtual Vector2u getSize () const
     Get the size of the rendering region of the window. More...
     
    bool setActive (bool active=true)
     Activate or deactivate the window as the current target for OpenGL rendering. More...
     
    Image capture () const
     Copy the current contents of the window to an image. More...
     
    void create (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
     Create (or recreate) the window. More...
     
    void create (WindowHandle handle, const ContextSettings &settings=ContextSettings())
     Create (or recreate) the window from an existing control. More...
     
    void close ()
     Close the window and destroy all the attached resources. More...
     
    bool isOpen () const
     Tell whether or not the window is open. More...
     
    const ContextSettingsgetSettings () const
     Get the settings of the OpenGL context of the window. More...
     
    bool pollEvent (Event &event)
     Pop the event on top of the event queue, if any, and return it. More...
     
    bool waitEvent (Event &event)
     Wait for an event and return it. More...
     
    Vector2i getPosition () const
     Get the position of the window. More...
     
    void setPosition (const Vector2i &position)
     Change the position of the window on screen. More...
     
    void setSize (const Vector2u &size)
     Change the size of the rendering region of the window. More...
     
    void setTitle (const String &title)
     Change the title of the window. More...
     
    void setIcon (unsigned int width, unsigned int height, const Uint8 *pixels)
     Change the window's icon. More...
     
    void setVisible (bool visible)
     Show or hide the window. More...
     
    void setVerticalSyncEnabled (bool enabled)
     Enable or disable vertical synchronization. More...
     
    void setMouseCursorVisible (bool visible)
     Show or hide the mouse cursor. More...
     
    void setMouseCursorGrabbed (bool grabbed)
     Grab or release the mouse cursor. More...
     
    void setMouseCursor (const Cursor &cursor)
     Set the displayed cursor to a native system cursor. More...
     
    void setKeyRepeatEnabled (bool enabled)
     Enable or disable automatic key-repeat. More...
     
    void setFramerateLimit (unsigned int limit)
     Limit the framerate to a maximum fixed frequency. More...
     
    void setJoystickThreshold (float threshold)
     Change the joystick threshold. More...
     
    bool setActive (bool active=true) const
     Activate or deactivate the window as the current target for OpenGL rendering. More...
     
    void requestFocus ()
     Request the current window to be made the active foreground window. More...
     
    bool hasFocus () const
     Check whether the window has the input focus. More...
     
    void display ()
     Display on screen what has been rendered to the window so far. More...
     
    WindowHandle getSystemHandle () const
     Get the OS-specific handle of the window. More...
     
    void clear (const Color &color=Color(0, 0, 0, 255))
     Clear the entire target with a single color. More...
     
    void setView (const View &view)
     Change the current active view. More...
     
    const ViewgetView () const
     Get the view currently in use in the render target. More...
     
    const ViewgetDefaultView () const
     Get the default view of the render target. More...
     
    IntRect getViewport (const View &view) const
     Get the viewport of a view, applied to this render target. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point) const
     Convert a point from target coordinates to world coordinates, using the current view. More...
     
    Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
     Convert a point from target coordinates to world coordinates. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point) const
     Convert a point from world coordinates to target coordinates, using the current view. More...
     
    Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
     Convert a point from world coordinates to target coordinates. More...
     
    void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
     Draw a drawable object to the render target. More...
     
    void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by an array of vertices. More...
     
    void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
     Draw primitives defined by a vertex buffer. More...
     
    void pushGLStates ()
     Save the current OpenGL render states and matrices. More...
     
    void popGLStates ()
     Restore the previously saved OpenGL render states and matrices. More...
     
    void resetGLStates ()
     Reset the internal OpenGL states so that the target is ready for drawing. More...
     
    + + + + + + + + + + +

    +Protected Member Functions

    virtual void onCreate ()
     Function called after the window has been created. More...
     
    virtual void onResize ()
     Function called after the window has been resized. More...
     
    void initialize ()
     Performs the common initialization step after creation. More...
     
    +

    Detailed Description

    +

    Window that can serve as a target for 2D drawing.

    +

    sf::RenderWindow is the main class of the Graphics module.

    +

    It defines an OS window that can be painted using the other classes of the graphics module.

    +

    sf::RenderWindow is derived from sf::Window, thus it inherits all its features: events, window management, OpenGL rendering, etc. See the documentation of sf::Window for a more complete description of all these features, as well as code examples.

    +

    On top of that, sf::RenderWindow adds more features related to 2D drawing with the graphics module (see its base class sf::RenderTarget for more details). Here is a typical rendering and event loop with a sf::RenderWindow:

    +
    // Declare and create a new render-window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    // Limit the framerate to 60 frames per second (this step is optional)
    window.setFramerateLimit(60);
    // The main loop - ends as soon as the window is closed
    while (window.isOpen())
    {
    // Event processing
    sf::Event event;
    while (window.pollEvent(event))
    {
    // Request for closing the window
    if (event.type == sf::Event::Closed)
    window.close();
    }
    // Clear the whole window before rendering a new frame
    window.clear();
    // Draw some graphical entities
    window.draw(sprite);
    window.draw(circle);
    window.draw(text);
    // End the current frame and display its contents on screen
    window.display();
    }

    Like sf::Window, sf::RenderWindow is still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands.

    +
    // Create the render window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL");
    // Create a sprite and a text to display
    sf::Sprite sprite;
    sf::Text text;
    ...
    // Perform OpenGL initializations
    glMatrixMode(GL_PROJECTION);
    ...
    // Start the rendering loop
    while (window.isOpen())
    {
    // Process events
    ...
    // Draw a background sprite
    window.pushGLStates();
    window.draw(sprite);
    window.popGLStates();
    // Draw a 3D object using OpenGL
    glBegin(GL_QUADS);
    glVertex3f(...);
    ...
    glEnd();
    // Draw text on top of the 3D object
    window.pushGLStates();
    window.draw(text);
    window.popGLStates();
    // Finally, display the rendered frame on screen
    window.display();
    }
    See also
    sf::Window, sf::RenderTarget, sf::RenderTexture, sf::View
    + +

    Definition at line 44 of file RenderWindow.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ RenderWindow() [1/3]

    + +
    +
    + + + + + + + +
    sf::RenderWindow::RenderWindow ()
    +
    + +

    Default constructor.

    +

    This constructor doesn't actually create the window, use the other constructors or call create() to do so.

    + +
    +
    + +

    ◆ RenderWindow() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::RenderWindow::RenderWindow (VideoMode mode,
    const Stringtitle,
    Uint32 style = Style::Default,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    + +

    Construct a new window.

    +

    This constructor creates the window with the size and pixel depth defined in mode. An optional style can be passed to customize the look and behavior of the window (borders, title bar, resizable, closable, ...).

    +

    The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc. You shouldn't care about these parameters for a regular usage of the graphics module.

    +
    Parameters
    + + + + + +
    modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
    titleTitle of the window
    styleWindow style, a bitwise OR combination of sf::Style enumerators
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ RenderWindow() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    sf::RenderWindow::RenderWindow (WindowHandle handle,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    +explicit
    +
    + +

    Construct the window from an existing control.

    +

    Use this constructor if you want to create an SFML rendering area into an already existing control.

    +

    The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc. You shouldn't care about these parameters for a regular usage of the graphics module.

    +
    Parameters
    + + + +
    handlePlatform-specific handle of the control (HWND on Windows, Window on Linux/FreeBSD, NSWindow on OS X)
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ ~RenderWindow()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::RenderWindow::~RenderWindow ()
    +
    +virtual
    +
    + +

    Destructor.

    +

    Closes the window and frees all the resources attached to it.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ capture()

    + +
    +
    + + + + + + + +
    Image sf::RenderWindow::capture () const
    +
    + +

    Copy the current contents of the window to an image.

    +
    Deprecated:
    Use a sf::Texture and its sf::Texture::update(const Window&) function and copy its contents into an sf::Image instead.
    +
    sf::Vector2u windowSize = window.getSize();
    sf::Texture texture;
    texture.create(windowSize.x, windowSize.y);
    texture.update(window);
    sf::Image screenshot = texture.copyToImage();

    This is a slow operation, whose main purpose is to make screenshots of the application. If you want to update an image with the contents of the window and then use it for drawing, you should rather use a sf::Texture and its update(Window&) function. You can also draw things directly to a texture with the sf::RenderTexture class.

    +
    Returns
    Image containing the captured contents
    + +
    +
    + +

    ◆ clear()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
    +
    +inherited
    +
    + +

    Clear the entire target with a single color.

    +

    This function is usually called once every frame, to clear the previous contents of the target.

    +
    Parameters
    + + +
    colorFill color to use to clear the render target
    +
    +
    + +
    +
    + +

    ◆ close()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Window::close ()
    +
    +inherited
    +
    + +

    Close the window and destroy all the attached resources.

    +

    After calling this function, the sf::Window instance remains valid and you can call create() to recreate the window. All other functions such as pollEvent() or display() will still work (i.e. you don't have to test isOpen() every time), and will have no effect on closed windows.

    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Window::create (VideoMode mode,
    const Stringtitle,
    Uint32 style = Style::Default,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    +inherited
    +
    + +

    Create (or recreate) the window.

    +

    If the window was already created, it closes it first. If style contains Style::Fullscreen, then mode must be a valid video mode.

    +

    The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + + + +
    modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
    titleTitle of the window
    styleWindow style, a bitwise OR combination of sf::Style enumerators
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Window::create (WindowHandle handle,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    +inherited
    +
    + +

    Create (or recreate) the window from an existing control.

    +

    Use this function if you want to create an OpenGL rendering area into an already existing control. If the window was already created, it closes it first.

    +

    The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + +
    handlePlatform-specific handle of the control
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ display()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Window::display ()
    +
    +inherited
    +
    + +

    Display on screen what has been rendered to the window so far.

    +

    This function is typically called after all OpenGL rendering has been done for the current frame, in order to show it on screen.

    + +
    +
    + +

    ◆ draw() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Drawabledrawable,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw a drawable object to the render target.

    +
    Parameters
    + + + +
    drawableObject to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const Vertexvertices,
    std::size_t vertexCount,
    PrimitiveType type,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by an array of vertices.

    +
    Parameters
    + + + + + +
    verticesPointer to the vertices
    vertexCountNumber of vertices in the array
    typeType of primitives to draw
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + +
    vertexBufferVertex buffer
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ draw() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
    std::size_t firstVertex,
    std::size_t vertexCount,
    const RenderStatesstates = RenderStates::Default 
    )
    +
    +inherited
    +
    + +

    Draw primitives defined by a vertex buffer.

    +
    Parameters
    + + + + + +
    vertexBufferVertex buffer
    firstVertexIndex of the first vertex to render
    vertexCountNumber of vertices to render
    statesRender states to use for drawing
    +
    +
    + +
    +
    + +

    ◆ getDefaultView()

    + +
    +
    + + + + + +
    + + + + + + + +
    const View& sf::RenderTarget::getDefaultView () const
    +
    +inherited
    +
    + +

    Get the default view of the render target.

    +

    The default view has the initial size of the render target, and never changes after the target has been created.

    +
    Returns
    The default view of the render target
    +
    See also
    setView, getView
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    Vector2i sf::Window::getPosition () const
    +
    +inherited
    +
    + +

    Get the position of the window.

    +
    Returns
    Position of the window, in pixels
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getSettings()

    + +
    +
    + + + + + +
    + + + + + + + +
    const ContextSettings& sf::Window::getSettings () const
    +
    +inherited
    +
    + +

    Get the settings of the OpenGL context of the window.

    +

    Note that these settings may be different from what was passed to the constructor or the create() function, if one or more settings were not supported. In this case, SFML chose the closest match.

    +
    Returns
    Structure containing the OpenGL context settings
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Vector2u sf::RenderWindow::getSize () const
    +
    +virtual
    +
    + +

    Get the size of the rendering region of the window.

    +

    The size doesn't include the titlebar and borders of the window.

    +
    Returns
    Size in pixels
    + +

    Implements sf::RenderTarget.

    + +
    +
    + +

    ◆ getSystemHandle()

    + +
    +
    + + + + + +
    + + + + + + + +
    WindowHandle sf::Window::getSystemHandle () const
    +
    +inherited
    +
    + +

    Get the OS-specific handle of the window.

    +

    The type of the returned handle is sf::WindowHandle, which is a typedef to the handle type defined by the OS. You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

    +
    Returns
    System handle of the window
    + +
    +
    + +

    ◆ getView()

    + +
    +
    + + + + + +
    + + + + + + + +
    const View& sf::RenderTarget::getView () const
    +
    +inherited
    +
    + +

    Get the view currently in use in the render target.

    +
    Returns
    The view object that is currently used
    +
    See also
    setView, getDefaultView
    + +
    +
    + +

    ◆ getViewport()

    + +
    +
    + + + + + +
    + + + + + + + + +
    IntRect sf::RenderTarget::getViewport (const Viewview) const
    +
    +inherited
    +
    + +

    Get the viewport of a view, applied to this render target.

    +

    The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

    +
    Parameters
    + + +
    viewThe view for which we want to compute the viewport
    +
    +
    +
    Returns
    Viewport rectangle, expressed in pixels
    + +
    +
    + +

    ◆ hasFocus()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Window::hasFocus () const
    +
    +inherited
    +
    + +

    Check whether the window has the input focus.

    +

    At any given time, only one window may have the input focus to receive input events such as keystrokes or most mouse events.

    +
    Returns
    True if window has focus, false otherwise
    +
    See also
    requestFocus
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::initialize ()
    +
    +protectedinherited
    +
    + +

    Performs the common initialization step after creation.

    +

    The derived classes must call this function after the target is created and ready for drawing.

    + +
    +
    + +

    ◆ isOpen()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Window::isOpen () const
    +
    +inherited
    +
    + +

    Tell whether or not the window is open.

    +

    This function returns whether or not the window exists. Note that a hidden window (setVisible(false)) is open (therefore this function would return true).

    +
    Returns
    True if the window is open, false if it has been closed
    + +
    +
    + +

    ◆ mapCoordsToPixel() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
    +
    +inherited
    +
    + +

    Convert a point from world coordinates to target coordinates, using the current view.

    +

    This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

    target.mapCoordsToPixel(point, target.getView());
    Parameters
    + + +
    pointPoint to convert
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapCoordsToPixel() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
    const Viewview 
    ) const
    +
    +inherited
    +
    + +

    Convert a point from world coordinates to target coordinates.

    +

    This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPoint to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in target coordinates (pixels)
    +
    See also
    mapPixelToCoords
    + +
    +
    + +

    ◆ mapPixelToCoords() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
    +
    +inherited
    +
    + +

    Convert a point from target coordinates to world coordinates, using the current view.

    +

    This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

    target.mapPixelToCoords(point, target.getView());
    Parameters
    + + +
    pointPixel to convert
    +
    +
    +
    Returns
    The converted point, in "world" coordinates
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ mapPixelToCoords() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
    const Viewview 
    ) const
    +
    +inherited
    +
    + +

    Convert a point from target coordinates to world coordinates.

    +

    This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

    +

    Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

    +

    For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

    +

    This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

    +
    Parameters
    + + + +
    pointPixel to convert
    viewThe view to use for converting the point
    +
    +
    +
    Returns
    The converted point, in "world" units
    +
    See also
    mapCoordsToPixel
    + +
    +
    + +

    ◆ onCreate()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::RenderWindow::onCreate ()
    +
    +protectedvirtual
    +
    + +

    Function called after the window has been created.

    +

    This function is called so that derived classes can perform their own specific initialization as soon as the window is created.

    + +

    Reimplemented from sf::Window.

    + +
    +
    + +

    ◆ onResize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::RenderWindow::onResize ()
    +
    +protectedvirtual
    +
    + +

    Function called after the window has been resized.

    +

    This function is called so that derived classes can perform custom actions when the size of the window changes.

    + +

    Reimplemented from sf::Window.

    + +
    +
    + +

    ◆ pollEvent()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::Window::pollEvent (Eventevent)
    +
    +inherited
    +
    + +

    Pop the event on top of the event queue, if any, and return it.

    +

    This function is not blocking: if there's no pending event then it will return false and leave event unmodified. Note that more than one event may be present in the event queue, thus you should always call this function in a loop to make sure that you process every pending event.

    sf::Event event;
    while (window.pollEvent(event))
    {
    // process event...
    }
    Parameters
    + + +
    eventEvent to be returned
    +
    +
    +
    Returns
    True if an event was returned, or false if the event queue was empty
    +
    See also
    waitEvent
    + +
    +
    + +

    ◆ popGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::popGLStates ()
    +
    +inherited
    +
    + +

    Restore the previously saved OpenGL render states and matrices.

    +

    See the description of pushGLStates to get a detailed description of these functions.

    +
    See also
    pushGLStates
    + +
    +
    + +

    ◆ pushGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::pushGLStates ()
    +
    +inherited
    +
    + +

    Save the current OpenGL render states and matrices.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

      +
    • SFML's internal states are not messed up by your OpenGL code
    • +
    • your OpenGL states are not modified by a call to a SFML function
    • +
    +

    More specifically, it must be used around code that calls Draw functions. Example:

    // OpenGL code here...
    window.pushGLStates();
    window.draw(...);
    window.draw(...);
    window.popGLStates();
    // OpenGL code here...

    Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

    +
    See also
    popGLStates
    + +
    +
    + +

    ◆ requestFocus()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Window::requestFocus ()
    +
    +inherited
    +
    + +

    Request the current window to be made the active foreground window.

    +

    At any given time, only one window may have the input focus to receive input events such as keystrokes or mouse events. If a window requests focus, it only hints to the operating system, that it would like to be focused. The operating system is free to deny the request. This is not to be confused with setActive().

    +
    See also
    hasFocus
    + +
    +
    + +

    ◆ resetGLStates()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::RenderTarget::resetGLStates ()
    +
    +inherited
    +
    + +

    Reset the internal OpenGL states so that the target is ready for drawing.

    +

    This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

    +

    Example:

    // OpenGL code here...
    glPushAttrib(...);
    window.resetGLStates();
    window.draw(...);
    window.draw(...);
    glPopAttrib(...);
    // OpenGL code here...
    +
    +
    + +

    ◆ setActive() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::RenderWindow::setActive (bool active = true)
    +
    +virtual
    +
    + +

    Activate or deactivate the window as the current target for OpenGL rendering.

    +

    A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True if operation was successful, false otherwise
    + +

    Reimplemented from sf::RenderTarget.

    + +
    +
    + +

    ◆ setActive() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::Window::setActive (bool active = true) const
    +
    +inherited
    +
    + +

    Activate or deactivate the window as the current target for OpenGL rendering.

    +

    A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True if operation was successful, false otherwise
    + +
    +
    + +

    ◆ setFramerateLimit()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setFramerateLimit (unsigned int limit)
    +
    +inherited
    +
    + +

    Limit the framerate to a maximum fixed frequency.

    +

    If a limit is set, the window will use a small delay after each call to display() to ensure that the current frame lasted long enough to match the framerate limit. SFML will try to match the given limit as much as it can, but since it internally uses sf::sleep, whose precision depends on the underlying OS, the results may be a little unprecise as well (for example, you can get 65 FPS when requesting 60).

    +
    Parameters
    + + +
    limitFramerate limit, in frames per seconds (use 0 to disable limit)
    +
    +
    + +
    +
    + +

    ◆ setIcon()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Window::setIcon (unsigned int width,
    unsigned int height,
    const Uint8 * pixels 
    )
    +
    +inherited
    +
    + +

    Change the window's icon.

    +

    pixels must be an array of width x height pixels in 32-bits RGBA format.

    +

    The OS default icon is used by default.

    +
    Parameters
    + + + + +
    widthIcon's width, in pixels
    heightIcon's height, in pixels
    pixelsPointer to the array of pixels in memory. The pixels are copied, so you need not keep the source alive after calling this function.
    +
    +
    +
    See also
    setTitle
    + +
    +
    + +

    ◆ setJoystickThreshold()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setJoystickThreshold (float threshold)
    +
    +inherited
    +
    + +

    Change the joystick threshold.

    +

    The joystick threshold is the value below which no JoystickMoved event will be generated.

    +

    The threshold value is 0.1 by default.

    +
    Parameters
    + + +
    thresholdNew threshold, in the range [0, 100]
    +
    +
    + +
    +
    + +

    ◆ setKeyRepeatEnabled()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setKeyRepeatEnabled (bool enabled)
    +
    +inherited
    +
    + +

    Enable or disable automatic key-repeat.

    +

    If key repeat is enabled, you will receive repeated KeyPressed events while keeping a key pressed. If it is disabled, you will only get a single event when the key is pressed.

    +

    Key repeat is enabled by default.

    +
    Parameters
    + + +
    enabledTrue to enable, false to disable
    +
    +
    + +
    +
    + +

    ◆ setMouseCursor()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setMouseCursor (const Cursorcursor)
    +
    +inherited
    +
    + +

    Set the displayed cursor to a native system cursor.

    +

    Upon window creation, the arrow cursor is used by default.

    +
    Warning
    The cursor must not be destroyed while in use by the window.
    +
    +Features related to Cursor are not supported on iOS and Android.
    +
    Parameters
    + + +
    cursorNative system cursor type to display
    +
    +
    +
    See also
    sf::Cursor::loadFromSystem
    +
    +sf::Cursor::loadFromPixels
    + +
    +
    + +

    ◆ setMouseCursorGrabbed()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setMouseCursorGrabbed (bool grabbed)
    +
    +inherited
    +
    + +

    Grab or release the mouse cursor.

    +

    If set, grabs the mouse cursor inside this window's client area so it may no longer be moved outside its bounds. Note that grabbing is only active while the window has focus.

    +
    Parameters
    + + +
    grabbedTrue to enable, false to disable
    +
    +
    + +
    +
    + +

    ◆ setMouseCursorVisible()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setMouseCursorVisible (bool visible)
    +
    +inherited
    +
    + +

    Show or hide the mouse cursor.

    +

    The mouse cursor is visible by default.

    +
    Parameters
    + + +
    visibleTrue to show the mouse cursor, false to hide it
    +
    +
    + +
    +
    + +

    ◆ setPosition()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setPosition (const Vector2iposition)
    +
    +inherited
    +
    + +

    Change the position of the window on screen.

    +

    This function only works for top-level windows (i.e. it will be ignored for windows created from the handle of a child window/control).

    +
    Parameters
    + + +
    positionNew position, in pixels
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setSize()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setSize (const Vector2usize)
    +
    +inherited
    +
    + +

    Change the size of the rendering region of the window.

    +
    Parameters
    + + +
    sizeNew size, in pixels
    +
    +
    +
    See also
    getSize
    + +
    +
    + +

    ◆ setTitle()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setTitle (const Stringtitle)
    +
    +inherited
    +
    + +

    Change the title of the window.

    +
    Parameters
    + + +
    titleNew title
    +
    +
    +
    See also
    setIcon
    + +
    +
    + +

    ◆ setVerticalSyncEnabled()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setVerticalSyncEnabled (bool enabled)
    +
    +inherited
    +
    + +

    Enable or disable vertical synchronization.

    +

    Activating vertical synchronization will limit the number of frames displayed to the refresh rate of the monitor. This can avoid some visual artifacts, and limit the framerate to a good value (but not constant across different computers).

    +

    Vertical synchronization is disabled by default.

    +
    Parameters
    + + +
    enabledTrue to enable v-sync, false to deactivate it
    +
    +
    + +
    +
    + +

    ◆ setView()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::RenderTarget::setView (const Viewview)
    +
    +inherited
    +
    + +

    Change the current active view.

    +

    The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

    +
    Parameters
    + + +
    viewNew view to use
    +
    +
    +
    See also
    getView, getDefaultView
    + +
    +
    + +

    ◆ setVisible()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Window::setVisible (bool visible)
    +
    +inherited
    +
    + +

    Show or hide the window.

    +

    The window is shown by default.

    +
    Parameters
    + + +
    visibleTrue to show the window, false to hide it
    +
    +
    + +
    +
    + +

    ◆ waitEvent()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::Window::waitEvent (Eventevent)
    +
    +inherited
    +
    + +

    Wait for an event and return it.

    +

    This function is blocking: if there's no pending event then it will wait until an event is received. After this function returns (and no error occurred), the event object is always valid and filled properly. This function is typically used when you have a thread that is dedicated to events handling: you want to make this thread sleep as long as no new event is received.

    sf::Event event;
    if (window.waitEvent(event))
    {
    // process event...
    }
    Parameters
    + + +
    eventEvent to be returned
    +
    +
    +
    Returns
    False if any error occurred
    +
    See also
    pollEvent
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1RenderWindow.png b/SFML/doc/html/classsf_1_1RenderWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..80a23b7609b8128f3852c0fb91e24a0d004d8882 GIT binary patch literal 1416 zcma)63rv$&82xLdc36cBBibrOEdm>H4iE%didvL{0t0*?l@ggCDuO~El!wI`5Rp_0 z4j)kE;e*F0Afr$VG|r8wfnTXS(iTNoDcE95k=9aa_p@bYGh4Eo-0z+*_vGI1p6}!q zgoo~0W{tK60ALw8h!g<;utW%-N5Y|qf=emTvMPLcRG`ITf#8ICmd1H-2||BNu~=+X zAjd)}GCd+R5`ahxW8iU=I{;YOlS$j6n6RmeDOQWGZJ@nhw#X9Vzc)9_mYK}4t2?Qx zvn{^bfGX*(DeVtGKy|(4S?aOFnT!tdi6*0et*xAj=2kT)k}ve|oLn6;zpr7^31N|^ zn104_R%wsZq;gFtz0)**&rX$#8rKNQD$qhrN4t*Byj*VMG$~lKr;Q@Zxx35#{bi;0 zsqDPr!3Zv##p|Y;L4|+GnU`O(D;}M!YBXHebRnV(>mA<4#yF=Qn;1-Mlvm|pzyX2r z+b&B&P(+Tw`F_#Cm+@W4f1I05)krtyM($wXhw23ld!F4Wyq-cB;(%j3+1-(h){+so ziQ79Jrt$031u3398J6FLnfyWdqVJSe+g5KXd9*3J&Y{6>>z4FHteZwSEi&rcc}}&5 z86Hwnc2>)guqnNWXv^v*?k^fEHp|ud-6~Kq{(|~*GV#PllgzvZ&FW5B!68M0PZES5 zsG+BQ2fVpD6V)cgXX^9@J`YSdL*;iXQky1ktP)DRajq9f^7nIdf@e2}^sl>7A87)r=aOJ9wD6TZEAQv2wH&k{7)ouR5ChdO>fcEG^izsOHKEDE=094)GpF1(e!v zDyLREmh<_N1k;~T!%pngS8tbjuwhIa|0IdUt`dd{KsF`xD_$oF-Jd270UciPH&R9YLA;Q|!e{P7!7Tf{wwgtN` zvl=zvAZN_rL;3^$D)yr}9uUGLr!Ph4>Fl}hkh#3Hs-ZGm@=;w^H!dmv_5GuuPt>dE zh-ov1ry`li^PaO`^Y|f$8W@K_35EF5lJcFP(6Dd)aGLY8@+fbKY~osyPgL(67yVYS z5FC&9IS97AD!~g1Ht}rS4+(e2a*uS>)#p8*5e+KD^L!1pL>I#qF3xB){UWDv+>_5l zEw|BUQFZoO`NnIid+LPaG-aU6+)kB`CHxp_C7+;A+d(yq?|wsXdel0BF)|c;4IyKu zJRG6yX4g7$Sapnx-i;g=A&6SR4ZU-%`q^vM0wE z#l_A=!w_`1>LY;}YARxev6-(dmdx!xI%}I^#G?omluk?AEM#ysVm(Nty;=kB6`0Ozy zd%lmRr(`ZP=|THa~u))I;?>E_6>4rM52-Mrmx0FN>7;E~^hbrSCdwLcv ccD!f-#57thcFZae`ZfV_U?{0^d)(RI0Ta&1Qvd(} literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Sensor-members.html b/SFML/doc/html/classsf_1_1Sensor-members.html new file mode 100644 index 0000000..c682e88 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Sensor-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Sensor Member List
    +
    +
    + +

    This is the complete list of members for sf::Sensor, including all inherited members.

    + + + + + + + + + + + + +
    Accelerometer enum valuesf::Sensor
    Count enum valuesf::Sensor
    getValue(Type sensor)sf::Sensorstatic
    Gravity enum valuesf::Sensor
    Gyroscope enum valuesf::Sensor
    isAvailable(Type sensor)sf::Sensorstatic
    Magnetometer enum valuesf::Sensor
    Orientation enum valuesf::Sensor
    setEnabled(Type sensor, bool enabled)sf::Sensorstatic
    Type enum namesf::Sensor
    UserAcceleration enum valuesf::Sensor
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sensor.html b/SFML/doc/html/classsf_1_1Sensor.html new file mode 100644 index 0000000..033c349 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Sensor.html @@ -0,0 +1,262 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Give access to the real-time state of the sensors. + More...

    + +

    #include <Sensor.hpp>

    + + + + + +

    +Public Types

    enum  Type {
    +  Accelerometer, +Gyroscope, +Magnetometer, +Gravity, +
    +  UserAcceleration, +Orientation, +Count +
    + }
     Sensor type. More...
     
    + + + + + + + + + + +

    +Static Public Member Functions

    static bool isAvailable (Type sensor)
     Check if a sensor is available on the underlying platform. More...
     
    static void setEnabled (Type sensor, bool enabled)
     Enable or disable a sensor. More...
     
    static Vector3f getValue (Type sensor)
     Get the current sensor value. More...
     
    +

    Detailed Description

    +

    Give access to the real-time state of the sensors.

    +

    sf::Sensor provides an interface to the state of the various sensors that a device provides.

    +

    It only contains static functions, so it's not meant to be instantiated.

    +

    This class allows users to query the sensors values at any time and directly, without having to deal with a window and its events. Compared to the SensorChanged event, sf::Sensor can retrieve the state of a sensor at any time (you don't need to store and update its current value on your side).

    +

    Depending on the OS and hardware of the device (phone, tablet, ...), some sensor types may not be available. You should always check the availability of a sensor before trying to read it, with the sf::Sensor::isAvailable function.

    +

    You may wonder why some sensor types look so similar, for example Accelerometer and Gravity / UserAcceleration. The first one is the raw measurement of the acceleration, and takes into account both the earth gravity and the user movement. The others are more precise: they provide these components separately, which is usually more useful. In fact they are not direct sensors, they are computed internally based on the raw acceleration and other sensors. This is exactly the same for Gyroscope vs Orientation.

    +

    Because sensors consume a non-negligible amount of current, they are all disabled by default. You must call sf::Sensor::setEnabled for each sensor in which you are interested.

    +

    Usage example:

    {
    // gravity sensor is available
    }
    // enable the gravity sensor
    // get the current value of gravity
    +

    Definition at line 42 of file Sensor.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Type

    + +
    +
    + + + + +
    enum sf::Sensor::Type
    +
    + +

    Sensor type.

    + + + + + + + + +
    Enumerator
    Accelerometer 

    Measures the raw acceleration (m/s^2)

    +
    Gyroscope 

    Measures the raw rotation rates (degrees/s)

    +
    Magnetometer 

    Measures the ambient magnetic field (micro-teslas)

    +
    Gravity 

    Measures the direction and intensity of gravity, independent of device acceleration (m/s^2)

    +
    UserAcceleration 

    Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2)

    +
    Orientation 

    Measures the absolute 3D orientation (degrees)

    +
    Count 

    Keep last – the total number of sensor types.

    +
    + +

    Definition at line 50 of file Sensor.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getValue()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static Vector3f sf::Sensor::getValue (Type sensor)
    +
    +static
    +
    + +

    Get the current sensor value.

    +
    Parameters
    + + +
    sensorSensor to read
    +
    +
    +
    Returns
    The current sensor value
    + +
    +
    + +

    ◆ isAvailable()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Sensor::isAvailable (Type sensor)
    +
    +static
    +
    + +

    Check if a sensor is available on the underlying platform.

    +
    Parameters
    + + +
    sensorSensor to check
    +
    +
    +
    Returns
    True if the sensor is available, false otherwise
    + +
    +
    + +

    ◆ setEnabled()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void sf::Sensor::setEnabled (Type sensor,
    bool enabled 
    )
    +
    +static
    +
    + +

    Enable or disable a sensor.

    +

    All sensors are disabled by default, to avoid consuming too much battery power. Once a sensor is enabled, it starts sending events of the corresponding type.

    +

    This function does nothing if the sensor is unavailable.

    +
    Parameters
    + + + +
    sensorSensor to enable
    enabledTrue to enable, false to disable
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Shader-members.html b/SFML/doc/html/classsf_1_1Shader-members.html new file mode 100644 index 0000000..4a688b4 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Shader-members.html @@ -0,0 +1,118 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Shader Member List
    +
    +
    + +

    This is the complete list of members for sf::Shader, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bind(const Shader *shader)sf::Shaderstatic
    CurrentTexturesf::Shaderstatic
    Fragment enum valuesf::Shader
    Geometry enum valuesf::Shader
    getNativeHandle() constsf::Shader
    GlResource()sf::GlResourceprivate
    isAvailable()sf::Shaderstatic
    isGeometryAvailable()sf::Shaderstatic
    loadFromFile(const std::string &filename, Type type)sf::Shader
    loadFromFile(const std::string &vertexShaderFilename, const std::string &fragmentShaderFilename)sf::Shader
    loadFromFile(const std::string &vertexShaderFilename, const std::string &geometryShaderFilename, const std::string &fragmentShaderFilename)sf::Shader
    loadFromMemory(const std::string &shader, Type type)sf::Shader
    loadFromMemory(const std::string &vertexShader, const std::string &fragmentShader)sf::Shader
    loadFromMemory(const std::string &vertexShader, const std::string &geometryShader, const std::string &fragmentShader)sf::Shader
    loadFromStream(InputStream &stream, Type type)sf::Shader
    loadFromStream(InputStream &vertexShaderStream, InputStream &fragmentShaderStream)sf::Shader
    loadFromStream(InputStream &vertexShaderStream, InputStream &geometryShaderStream, InputStream &fragmentShaderStream)sf::Shader
    NonCopyable()sf::NonCopyableinlineprivate
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
    setParameter(const std::string &name, float x)sf::Shader
    setParameter(const std::string &name, float x, float y)sf::Shader
    setParameter(const std::string &name, float x, float y, float z)sf::Shader
    setParameter(const std::string &name, float x, float y, float z, float w)sf::Shader
    setParameter(const std::string &name, const Vector2f &vector)sf::Shader
    setParameter(const std::string &name, const Vector3f &vector)sf::Shader
    setParameter(const std::string &name, const Color &color)sf::Shader
    setParameter(const std::string &name, const Transform &transform)sf::Shader
    setParameter(const std::string &name, const Texture &texture)sf::Shader
    setParameter(const std::string &name, CurrentTextureType)sf::Shader
    setUniform(const std::string &name, float x)sf::Shader
    setUniform(const std::string &name, const Glsl::Vec2 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Vec3 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Vec4 &vector)sf::Shader
    setUniform(const std::string &name, int x)sf::Shader
    setUniform(const std::string &name, const Glsl::Ivec2 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Ivec3 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Ivec4 &vector)sf::Shader
    setUniform(const std::string &name, bool x)sf::Shader
    setUniform(const std::string &name, const Glsl::Bvec2 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Bvec3 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Bvec4 &vector)sf::Shader
    setUniform(const std::string &name, const Glsl::Mat3 &matrix)sf::Shader
    setUniform(const std::string &name, const Glsl::Mat4 &matrix)sf::Shader
    setUniform(const std::string &name, const Texture &texture)sf::Shader
    setUniform(const std::string &name, CurrentTextureType)sf::Shader
    setUniformArray(const std::string &name, const float *scalarArray, std::size_t length)sf::Shader
    setUniformArray(const std::string &name, const Glsl::Vec2 *vectorArray, std::size_t length)sf::Shader
    setUniformArray(const std::string &name, const Glsl::Vec3 *vectorArray, std::size_t length)sf::Shader
    setUniformArray(const std::string &name, const Glsl::Vec4 *vectorArray, std::size_t length)sf::Shader
    setUniformArray(const std::string &name, const Glsl::Mat3 *matrixArray, std::size_t length)sf::Shader
    setUniformArray(const std::string &name, const Glsl::Mat4 *matrixArray, std::size_t length)sf::Shader
    Shader()sf::Shader
    Type enum namesf::Shader
    Vertex enum valuesf::Shader
    ~GlResource()sf::GlResourceprivate
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~Shader()sf::Shader
    + + + + diff --git a/SFML/doc/html/classsf_1_1Shader.html b/SFML/doc/html/classsf_1_1Shader.html new file mode 100644 index 0000000..9be161f --- /dev/null +++ b/SFML/doc/html/classsf_1_1Shader.html @@ -0,0 +1,2092 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Shader class (vertex, geometry and fragment) + More...

    + +

    #include <Shader.hpp>

    +
    +Inheritance diagram for sf::Shader:
    +
    +
    + + +sf::GlResource +sf::NonCopyable + +
    + + + + + +

    +Classes

    struct  CurrentTextureType
     Special type that can be passed to setUniform(), and that represents the texture of the object being drawn. More...
     
    + + + + +

    +Public Types

    enum  Type { Vertex, +Geometry, +Fragment + }
     Types of shaders. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Shader ()
     Default constructor. More...
     
     ~Shader ()
     Destructor. More...
     
    bool loadFromFile (const std::string &filename, Type type)
     Load the vertex, geometry or fragment shader from a file. More...
     
    bool loadFromFile (const std::string &vertexShaderFilename, const std::string &fragmentShaderFilename)
     Load both the vertex and fragment shaders from files. More...
     
    bool loadFromFile (const std::string &vertexShaderFilename, const std::string &geometryShaderFilename, const std::string &fragmentShaderFilename)
     Load the vertex, geometry and fragment shaders from files. More...
     
    bool loadFromMemory (const std::string &shader, Type type)
     Load the vertex, geometry or fragment shader from a source code in memory. More...
     
    bool loadFromMemory (const std::string &vertexShader, const std::string &fragmentShader)
     Load both the vertex and fragment shaders from source codes in memory. More...
     
    bool loadFromMemory (const std::string &vertexShader, const std::string &geometryShader, const std::string &fragmentShader)
     Load the vertex, geometry and fragment shaders from source codes in memory. More...
     
    bool loadFromStream (InputStream &stream, Type type)
     Load the vertex, geometry or fragment shader from a custom stream. More...
     
    bool loadFromStream (InputStream &vertexShaderStream, InputStream &fragmentShaderStream)
     Load both the vertex and fragment shaders from custom streams. More...
     
    bool loadFromStream (InputStream &vertexShaderStream, InputStream &geometryShaderStream, InputStream &fragmentShaderStream)
     Load the vertex, geometry and fragment shaders from custom streams. More...
     
    void setUniform (const std::string &name, float x)
     Specify value for float uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Vec2 &vector)
     Specify value for vec2 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Vec3 &vector)
     Specify value for vec3 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Vec4 &vector)
     Specify value for vec4 uniform. More...
     
    void setUniform (const std::string &name, int x)
     Specify value for int uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Ivec2 &vector)
     Specify value for ivec2 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Ivec3 &vector)
     Specify value for ivec3 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Ivec4 &vector)
     Specify value for ivec4 uniform. More...
     
    void setUniform (const std::string &name, bool x)
     Specify value for bool uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Bvec2 &vector)
     Specify value for bvec2 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Bvec3 &vector)
     Specify value for bvec3 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Bvec4 &vector)
     Specify value for bvec4 uniform. More...
     
    void setUniform (const std::string &name, const Glsl::Mat3 &matrix)
     Specify value for mat3 matrix. More...
     
    void setUniform (const std::string &name, const Glsl::Mat4 &matrix)
     Specify value for mat4 matrix. More...
     
    void setUniform (const std::string &name, const Texture &texture)
     Specify a texture as sampler2D uniform. More...
     
    void setUniform (const std::string &name, CurrentTextureType)
     Specify current texture as sampler2D uniform. More...
     
    void setUniformArray (const std::string &name, const float *scalarArray, std::size_t length)
     Specify values for float[] array uniform. More...
     
    void setUniformArray (const std::string &name, const Glsl::Vec2 *vectorArray, std::size_t length)
     Specify values for vec2[] array uniform. More...
     
    void setUniformArray (const std::string &name, const Glsl::Vec3 *vectorArray, std::size_t length)
     Specify values for vec3[] array uniform. More...
     
    void setUniformArray (const std::string &name, const Glsl::Vec4 *vectorArray, std::size_t length)
     Specify values for vec4[] array uniform. More...
     
    void setUniformArray (const std::string &name, const Glsl::Mat3 *matrixArray, std::size_t length)
     Specify values for mat3[] array uniform. More...
     
    void setUniformArray (const std::string &name, const Glsl::Mat4 *matrixArray, std::size_t length)
     Specify values for mat4[] array uniform. More...
     
    void setParameter (const std::string &name, float x)
     Change a float parameter of the shader. More...
     
    void setParameter (const std::string &name, float x, float y)
     Change a 2-components vector parameter of the shader. More...
     
    void setParameter (const std::string &name, float x, float y, float z)
     Change a 3-components vector parameter of the shader. More...
     
    void setParameter (const std::string &name, float x, float y, float z, float w)
     Change a 4-components vector parameter of the shader. More...
     
    void setParameter (const std::string &name, const Vector2f &vector)
     Change a 2-components vector parameter of the shader. More...
     
    void setParameter (const std::string &name, const Vector3f &vector)
     Change a 3-components vector parameter of the shader. More...
     
    void setParameter (const std::string &name, const Color &color)
     Change a color parameter of the shader. More...
     
    void setParameter (const std::string &name, const Transform &transform)
     Change a matrix parameter of the shader. More...
     
    void setParameter (const std::string &name, const Texture &texture)
     Change a texture parameter of the shader. More...
     
    void setParameter (const std::string &name, CurrentTextureType)
     Change a texture parameter of the shader. More...
     
    unsigned int getNativeHandle () const
     Get the underlying OpenGL handle of the shader. More...
     
    + + + + + + + + + + +

    +Static Public Member Functions

    static void bind (const Shader *shader)
     Bind a shader for rendering. More...
     
    static bool isAvailable ()
     Tell whether or not the system supports shaders. More...
     
    static bool isGeometryAvailable ()
     Tell whether or not the system supports geometry shaders. More...
     
    + + + + +

    +Static Public Attributes

    static CurrentTextureType CurrentTexture
     Represents the texture of the object being drawn. More...
     
    + + + + +

    +Static Private Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    +

    Detailed Description

    +

    Shader class (vertex, geometry and fragment)

    +

    Shaders are programs written using a specific language, executed directly by the graphics card and allowing to apply real-time operations to the rendered entities.

    +

    There are three kinds of shaders:

      +
    • Vertex shaders, that process vertices
    • +
    • Geometry shaders, that process primitives
    • +
    • Fragment (pixel) shaders, that process pixels
    • +
    +

    A sf::Shader can be composed of either a vertex shader alone, a geometry shader alone, a fragment shader alone, or any combination of them. (see the variants of the load functions).

    +

    Shaders are written in GLSL, which is a C-like language dedicated to OpenGL shaders. You'll probably need to learn its basics before writing your own shaders for SFML.

    +

    Like any C/C++ program, a GLSL shader has its own variables called uniforms that you can set from your C++ application. sf::Shader handles different types of uniforms:

      +
    • scalars: float, int, bool
    • +
    • vectors (2, 3 or 4 components)
    • +
    • matrices (3x3 or 4x4)
    • +
    • samplers (textures)
    • +
    +

    Some SFML-specific types can be converted:

    +

    Every uniform variable in a shader can be set through one of the setUniform() or setUniformArray() overloads. For example, if you have a shader with the following uniforms:

    uniform float offset;
    uniform vec3 point;
    uniform vec4 color;
    uniform mat4 matrix;
    uniform sampler2D overlay;
    uniform sampler2D current;

    You can set their values from C++ code as follows, using the types defined in the sf::Glsl namespace:

    shader.setUniform("offset", 2.f);
    shader.setUniform("point", sf::Vector3f(0.5f, 0.8f, 0.3f));
    shader.setUniform("color", sf::Glsl::Vec4(color)); // color is a sf::Color
    shader.setUniform("matrix", sf::Glsl::Mat4(transform)); // transform is a sf::Transform
    shader.setUniform("overlay", texture); // texture is a sf::Texture
    shader.setUniform("current", sf::Shader::CurrentTexture);

    The old setParameter() overloads are deprecated and will be removed in a future version. You should use their setUniform() equivalents instead.

    +

    The special Shader::CurrentTexture argument maps the given sampler2D uniform to the current texture of the object being drawn (which cannot be known in advance).

    +

    To apply a shader to a drawable, you must pass it as an additional parameter to the RenderWindow::draw function:

    window.draw(sprite, &shader);

    ... which is in fact just a shortcut for this:

    states.shader = &shader;
    window.draw(sprite, states);

    In the code above we pass a pointer to the shader, because it may be null (which means "no shader").

    +

    Shaders can be used on any drawable, but some combinations are not interesting. For example, using a vertex shader on a sf::Sprite is limited because there are only 4 vertices, the sprite would have to be subdivided in order to apply wave effects. Another bad example is a fragment shader with sf::Text: the texture of the text is not the actual text that you see on screen, it is a big texture containing all the characters of the font in an arbitrary order; thus, texture lookups on pixels other than the current one may not give you the expected result.

    +

    Shaders can also be used to apply global post-effects to the current contents of the target (like the old sf::PostFx class in SFML 1). This can be done in two different ways:

      +
    • draw everything to a sf::RenderTexture, then draw it to the main target using the shader
    • +
    • draw everything directly to the main target, then use sf::Texture::update(Window&) to copy its contents to a texture and draw it to the main target using the shader
    • +
    +

    The first technique is more optimized because it doesn't involve retrieving the target's pixels to system memory, but the second one doesn't impact the rendering process and can be easily inserted anywhere without impacting all the code.

    +

    Like sf::Texture that can be used as a raw OpenGL texture, sf::Shader can also be used directly as a raw shader for custom OpenGL geometry.

    ... render OpenGL geometry ...
    sf::Shader::bind(NULL);
    See also
    sf::Glsl
    + +

    Definition at line 52 of file Shader.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Type

    + +
    +
    + + + + +
    enum sf::Shader::Type
    +
    + +

    Types of shaders.

    + + + + +
    Enumerator
    Vertex 

    Vertex shader

    +
    Geometry 

    Geometry shader.

    +
    Fragment 

    Fragment (pixel) shader.

    +
    + +

    Definition at line 60 of file Shader.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Shader()

    + +
    +
    + + + + + + + +
    sf::Shader::Shader ()
    +
    + +

    Default constructor.

    +

    This constructor creates an invalid shader.

    + +
    +
    + +

    ◆ ~Shader()

    + +
    +
    + + + + + + + +
    sf::Shader::~Shader ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ bind()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::Shader::bind (const Shadershader)
    +
    +static
    +
    + +

    Bind a shader for rendering.

    +

    This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::Shader with OpenGL code.

    +
    sf::Shader s1, s2;
    ...
    sf::Shader::bind(&s1);
    // draw OpenGL stuff that use s1...
    // draw OpenGL stuff that use s2...
    // draw OpenGL stuff that use no shader...
    Parameters
    + + +
    shaderShader to bind, can be null to use no shader
    +
    +
    + +
    +
    + +

    ◆ getNativeHandle()

    + +
    +
    + + + + + + + +
    unsigned int sf::Shader::getNativeHandle () const
    +
    + +

    Get the underlying OpenGL handle of the shader.

    +

    You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

    +
    Returns
    OpenGL handle of the shader or 0 if not yet loaded
    + +
    +
    + +

    ◆ isAvailable()

    + +
    +
    + + + + + +
    + + + + + + + +
    static bool sf::Shader::isAvailable ()
    +
    +static
    +
    + +

    Tell whether or not the system supports shaders.

    +

    This function should always be called before using the shader features. If it returns false, then any attempt to use sf::Shader will fail.

    +
    Returns
    True if shaders are supported, false otherwise
    + +
    +
    + +

    ◆ isGeometryAvailable()

    + +
    +
    + + + + + +
    + + + + + + + +
    static bool sf::Shader::isGeometryAvailable ()
    +
    +static
    +
    + +

    Tell whether or not the system supports geometry shaders.

    +

    This function should always be called before using the geometry shader features. If it returns false, then any attempt to use sf::Shader geometry shader features will fail.

    +

    This function can only return true if isAvailable() would also return true, since shaders in general have to be supported in order for geometry shaders to be supported as well.

    +

    Note: The first call to this function, whether by your code or SFML will result in a context switch.

    +
    Returns
    True if geometry shaders are supported, false otherwise
    + +
    +
    + +

    ◆ loadFromFile() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromFile (const std::string & filename,
    Type type 
    )
    +
    + +

    Load the vertex, geometry or fragment shader from a file.

    +

    This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source must be a text file containing a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    filenamePath of the vertex, geometry or fragment shader file to load
    typeType of shader (vertex, geometry or fragment)
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromMemory, loadFromStream
    + +
    +
    + +

    ◆ loadFromFile() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromFile (const std::string & vertexShaderFilename,
    const std::string & fragmentShaderFilename 
    )
    +
    + +

    Load both the vertex and fragment shaders from files.

    +

    This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be text files containing valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    vertexShaderFilenamePath of the vertex shader file to load
    fragmentShaderFilenamePath of the fragment shader file to load
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromMemory, loadFromStream
    + +
    +
    + +

    ◆ loadFromFile() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromFile (const std::string & vertexShaderFilename,
    const std::string & geometryShaderFilename,
    const std::string & fragmentShaderFilename 
    )
    +
    + +

    Load the vertex, geometry and fragment shaders from files.

    +

    This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be text files containing valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + + +
    vertexShaderFilenamePath of the vertex shader file to load
    geometryShaderFilenamePath of the geometry shader file to load
    fragmentShaderFilenamePath of the fragment shader file to load
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromMemory, loadFromStream
    + +
    +
    + +

    ◆ loadFromMemory() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromMemory (const std::string & shader,
    Type type 
    )
    +
    + +

    Load the vertex, geometry or fragment shader from a source code in memory.

    +

    This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source code must be a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    shaderString containing the source code of the shader
    typeType of shader (vertex, geometry or fragment)
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromStream
    + +
    +
    + +

    ◆ loadFromMemory() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromMemory (const std::string & vertexShader,
    const std::string & fragmentShader 
    )
    +
    + +

    Load both the vertex and fragment shaders from source codes in memory.

    +

    This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    vertexShaderString containing the source code of the vertex shader
    fragmentShaderString containing the source code of the fragment shader
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromStream
    + +
    +
    + +

    ◆ loadFromMemory() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromMemory (const std::string & vertexShader,
    const std::string & geometryShader,
    const std::string & fragmentShader 
    )
    +
    + +

    Load the vertex, geometry and fragment shaders from source codes in memory.

    +

    This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + + +
    vertexShaderString containing the source code of the vertex shader
    geometryShaderString containing the source code of the geometry shader
    fragmentShaderString containing the source code of the fragment shader
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromStream
    + +
    +
    + +

    ◆ loadFromStream() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromStream (InputStreamstream,
    Type type 
    )
    +
    + +

    Load the vertex, geometry or fragment shader from a custom stream.

    +

    This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source code must be a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    streamSource stream to read from
    typeType of shader (vertex, geometry or fragment)
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ loadFromStream() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromStream (InputStreamvertexShaderStream,
    InputStreamfragmentShaderStream 
    )
    +
    + +

    Load both the vertex and fragment shaders from custom streams.

    +

    This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The source codes must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + +
    vertexShaderStreamSource stream to read the vertex shader from
    fragmentShaderStreamSource stream to read the fragment shader from
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ loadFromStream() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::Shader::loadFromStream (InputStreamvertexShaderStream,
    InputStreamgeometryShaderStream,
    InputStreamfragmentShaderStream 
    )
    +
    + +

    Load the vertex, geometry and fragment shaders from custom streams.

    +

    This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The source codes must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

    +
    Parameters
    + + + + +
    vertexShaderStreamSource stream to read the vertex shader from
    geometryShaderStreamSource stream to read the geometry shader from
    fragmentShaderStreamSource stream to read the fragment shader from
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ setParameter() [1/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    float x 
    )
    +
    + +

    Change a float parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, float) instead.
    + +
    +
    + +

    ◆ setParameter() [2/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    float x,
    float y 
    )
    +
    + +

    Change a 2-components vector parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec2&) instead.
    + +
    +
    + +

    ◆ setParameter() [3/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    float x,
    float y,
    float z 
    )
    +
    + +

    Change a 3-components vector parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec3&) instead.
    + +
    +
    + +

    ◆ setParameter() [4/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    float x,
    float y,
    float z,
    float w 
    )
    +
    + +

    Change a 4-components vector parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec4&) instead.
    + +
    +
    + +

    ◆ setParameter() [5/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    const Vector2fvector 
    )
    +
    + +

    Change a 2-components vector parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec2&) instead.
    + +
    +
    + +

    ◆ setParameter() [6/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    const Vector3fvector 
    )
    +
    + +

    Change a 3-components vector parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec3&) instead.
    + +
    +
    + +

    ◆ setParameter() [7/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    const Colorcolor 
    )
    +
    + +

    Change a color parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Vec4&) instead.
    + +
    +
    + +

    ◆ setParameter() [8/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    const Transformtransform 
    )
    +
    + +

    Change a matrix parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Glsl::Mat4&) instead.
    + +
    +
    + +

    ◆ setParameter() [9/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    const Texturetexture 
    )
    +
    + +

    Change a texture parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, const Texture&) instead.
    + +
    +
    + +

    ◆ setParameter() [10/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setParameter (const std::string & name,
    CurrentTextureType  
    )
    +
    + +

    Change a texture parameter of the shader.

    +
    Deprecated:
    Use setUniform(const std::string&, CurrentTextureType) instead.
    + +
    +
    + +

    ◆ setUniform() [1/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    float x 
    )
    +
    + +

    Specify value for float uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    xValue of the float scalar
    +
    +
    + +
    +
    + +

    ◆ setUniform() [2/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Vec2vector 
    )
    +
    + +

    Specify value for vec2 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the vec2 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [3/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Vec3vector 
    )
    +
    + +

    Specify value for vec3 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the vec3 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [4/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Vec4vector 
    )
    +
    + +

    Specify value for vec4 uniform.

    +

    This overload can also be called with sf::Color objects that are converted to sf::Glsl::Vec4.

    +

    It is important to note that the components of the color are normalized before being passed to the shader. Therefore, they are converted from range [0 .. 255] to range [0 .. 1]. For example, a sf::Color(255, 127, 0, 255) will be transformed to a vec4(1.0, 0.5, 0.0, 1.0) in the shader.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the vec4 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [5/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    int x 
    )
    +
    + +

    Specify value for int uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    xValue of the int scalar
    +
    +
    + +
    +
    + +

    ◆ setUniform() [6/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Ivec2vector 
    )
    +
    + +

    Specify value for ivec2 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the ivec2 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [7/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Ivec3vector 
    )
    +
    + +

    Specify value for ivec3 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the ivec3 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [8/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Ivec4vector 
    )
    +
    + +

    Specify value for ivec4 uniform.

    +

    This overload can also be called with sf::Color objects that are converted to sf::Glsl::Ivec4.

    +

    If color conversions are used, the ivec4 uniform in GLSL will hold the same values as the original sf::Color instance. For example, sf::Color(255, 127, 0, 255) is mapped to ivec4(255, 127, 0, 255).

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the ivec4 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [9/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    bool x 
    )
    +
    + +

    Specify value for bool uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    xValue of the bool scalar
    +
    +
    + +
    +
    + +

    ◆ setUniform() [10/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Bvec2vector 
    )
    +
    + +

    Specify value for bvec2 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the bvec2 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [11/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Bvec3vector 
    )
    +
    + +

    Specify value for bvec3 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the bvec3 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [12/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Bvec4vector 
    )
    +
    + +

    Specify value for bvec4 uniform.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    vectorValue of the bvec4 vector
    +
    +
    + +
    +
    + +

    ◆ setUniform() [13/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Mat3matrix 
    )
    +
    + +

    Specify value for mat3 matrix.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    matrixValue of the mat3 matrix
    +
    +
    + +
    +
    + +

    ◆ setUniform() [14/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Glsl::Mat4matrix 
    )
    +
    + +

    Specify value for mat4 matrix.

    +
    Parameters
    + + + +
    nameName of the uniform variable in GLSL
    matrixValue of the mat4 matrix
    +
    +
    + +
    +
    + +

    ◆ setUniform() [15/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    const Texturetexture 
    )
    +
    + +

    Specify a texture as sampler2D uniform.

    +

    name is the name of the variable to change in the shader. The corresponding parameter in the shader must be a 2D texture (sampler2D GLSL type).

    +

    Example:

    uniform sampler2D the_texture; // this is the variable in the shader
    sf::Texture texture;
    ...
    shader.setUniform("the_texture", texture);

    It is important to note that texture must remain alive as long as the shader uses it, no copy is made internally.

    +

    To use the texture of the object being drawn, which cannot be known in advance, you can pass the special value sf::Shader::CurrentTexture:

    shader.setUniform("the_texture", sf::Shader::CurrentTexture).
    Parameters
    + + + +
    nameName of the texture in the shader
    textureTexture to assign
    +
    +
    + +
    +
    + +

    ◆ setUniform() [16/16]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniform (const std::string & name,
    CurrentTextureType  
    )
    +
    + +

    Specify current texture as sampler2D uniform.

    +

    This overload maps a shader texture variable to the texture of the object being drawn, which cannot be known in advance. The second argument must be sf::Shader::CurrentTexture. The corresponding parameter in the shader must be a 2D texture (sampler2D GLSL type).

    +

    Example:

    uniform sampler2D current; // this is the variable in the shader
    shader.setUniform("current", sf::Shader::CurrentTexture);
    Parameters
    + + +
    nameName of the texture in the shader
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [1/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const float * scalarArray,
    std::size_t length 
    )
    +
    + +

    Specify values for float[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    scalarArraypointer to array of float values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [2/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const Glsl::Vec2vectorArray,
    std::size_t length 
    )
    +
    + +

    Specify values for vec2[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    vectorArraypointer to array of vec2 values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [3/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const Glsl::Vec3vectorArray,
    std::size_t length 
    )
    +
    + +

    Specify values for vec3[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    vectorArraypointer to array of vec3 values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [4/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const Glsl::Vec4vectorArray,
    std::size_t length 
    )
    +
    + +

    Specify values for vec4[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    vectorArraypointer to array of vec4 values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [5/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const Glsl::Mat3matrixArray,
    std::size_t length 
    )
    +
    + +

    Specify values for mat3[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    matrixArraypointer to array of mat3 values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    + +

    ◆ setUniformArray() [6/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Shader::setUniformArray (const std::string & name,
    const Glsl::Mat4matrixArray,
    std::size_t length 
    )
    +
    + +

    Specify values for mat4[] array uniform.

    +
    Parameters
    + + + + +
    nameName of the uniform variable in GLSL
    matrixArraypointer to array of mat4 values
    lengthNumber of elements in the array
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ CurrentTexture

    + +
    +
    + + + + + +
    + + + + +
    CurrentTextureType sf::Shader::CurrentTexture
    +
    +static
    +
    + +

    Represents the texture of the object being drawn.

    +
    See also
    setUniform(const std::string&, CurrentTextureType)
    + +

    Definition at line 82 of file Shader.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Shader.png b/SFML/doc/html/classsf_1_1Shader.png new file mode 100644 index 0000000000000000000000000000000000000000..52135c6f542c71076203eba2dca243b9cb8478e1 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^cYrv6gBeJ=etRtdq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0sy$sCLn;{G&V9XYl>rai^7z{S>2^(1 z;{*fB#Gj_Dx8)L%UY2<%e$V%P+&cC5s_(PzQ7KiJI(Z4-j5#WQdro>@s{B)5bWXMX z^U29CHR7f(NnUeGck{k|(uQR&e2;(T>h65f_p`vLyM59Z-t3~6PTQQ{bnbD_n`Ixl z>`MZt;IaGj6*o5i_+7MBx+ru@>O6zjMn5MV{8RM#o<*{rc=42!)e}y;J@%Zjeb*Pq zb$!$Ro1K}aTUxiXG+$`Pq|?)1?G^Amt2+5w(NDIU)3g_x&fh&{b=Z0@kKlE;*uQeQ zpFFf>iuUdUr?%-#|I~4(`uB73gm*O}65}Lk5`HH@lXO`iHJIih#D7u}ee9H5ZosZw7x?@jNUfR6Vd%pL(t;Z8! zAhI*GS2BEA8h^t2w5{CTx4&BVY`$Y0kiWZ5F<+OxAUW@^7Q+tRX_gIw8_zKIbfoen zxV)RY^Eh)Ab3x{sA_li3M(hSkDAGE`49ZC}nI$GB8aga%WM+%AEyUC;Z>T&rtQbGJ4wK$Vro?_^Laf6n(3lt8sRH?^320 zXZvQ|o^U#gZ^6mX?N2WSY??LuTwGS + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Shape Member List
    +
    +
    + +

    This is the complete list of members for sf::Shape, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getFillColor() constsf::Shape
    getGlobalBounds() constsf::Shape
    getInverseTransform() constsf::Transformable
    getLocalBounds() constsf::Shape
    getOrigin() constsf::Transformable
    getOutlineColor() constsf::Shape
    getOutlineThickness() constsf::Shape
    getPoint(std::size_t index) const =0sf::Shapepure virtual
    getPointCount() const =0sf::Shapepure virtual
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getTexture() constsf::Shape
    getTextureRect() constsf::Shape
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setFillColor(const Color &color)sf::Shape
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setOutlineColor(const Color &color)sf::Shape
    setOutlineThickness(float thickness)sf::Shape
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setTexture(const Texture *texture, bool resetRect=false)sf::Shape
    setTextureRect(const IntRect &rect)sf::Shape
    Shape()sf::Shapeprotected
    Transformable()sf::Transformable
    update()sf::Shapeprotected
    ~Drawable()sf::Drawableinlinevirtual
    ~Shape()sf::Shapevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Shape.html b/SFML/doc/html/classsf_1_1Shape.html new file mode 100644 index 0000000..ea4bec8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Shape.html @@ -0,0 +1,1328 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Base class for textured shapes with outline. + More...

    + +

    #include <Shape.hpp>

    +
    +Inheritance diagram for sf::Shape:
    +
    +
    + + +sf::Drawable +sf::Transformable +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~Shape ()
     Virtual destructor. More...
     
    void setTexture (const Texture *texture, bool resetRect=false)
     Change the source texture of the shape. More...
     
    void setTextureRect (const IntRect &rect)
     Set the sub-rectangle of the texture that the shape will display. More...
     
    void setFillColor (const Color &color)
     Set the fill color of the shape. More...
     
    void setOutlineColor (const Color &color)
     Set the outline color of the shape. More...
     
    void setOutlineThickness (float thickness)
     Set the thickness of the shape's outline. More...
     
    const TexturegetTexture () const
     Get the source texture of the shape. More...
     
    const IntRectgetTextureRect () const
     Get the sub-rectangle of the texture displayed by the shape. More...
     
    const ColorgetFillColor () const
     Get the fill color of the shape. More...
     
    const ColorgetOutlineColor () const
     Get the outline color of the shape. More...
     
    float getOutlineThickness () const
     Get the outline thickness of the shape. More...
     
    virtual std::size_t getPointCount () const =0
     Get the total number of points of the shape. More...
     
    virtual Vector2f getPoint (std::size_t index) const =0
     Get a point of the shape. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global (non-minimal) bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    + + + + + + + +

    +Protected Member Functions

     Shape ()
     Default constructor. More...
     
    void update ()
     Recompute the internal geometry of the shape. More...
     
    +

    Detailed Description

    +

    Base class for textured shapes with outline.

    +

    sf::Shape is a drawable class that allows to define and display a custom convex shape on a render target.

    +

    It's only an abstract base, it needs to be specialized for concrete types of shapes (circle, rectangle, convex polygon, star, ...).

    +

    In addition to the attributes provided by the specialized shape classes, a shape always has the following attributes:

      +
    • a texture
    • +
    • a texture rectangle
    • +
    • a fill color
    • +
    • an outline color
    • +
    • an outline thickness
    • +
    +

    Each feature is optional, and can be disabled easily:

      +
    • the texture can be null
    • +
    • the fill/outline colors can be sf::Color::Transparent
    • +
    • the outline thickness can be zero
    • +
    +

    You can write your own derived shape class, there are only two virtual functions to override:

      +
    • getPointCount must return the number of points of the shape
    • +
    • getPoint must return the points of the shape
    • +
    +
    See also
    sf::RectangleShape, sf::CircleShape, sf::ConvexShape, sf::Transformable
    + +

    Definition at line 44 of file Shape.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~Shape()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Shape::~Shape ()
    +
    +virtual
    +
    + +

    Virtual destructor.

    + +
    +
    + +

    ◆ Shape()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::Shape::Shape ()
    +
    +protected
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getFillColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Shape::getFillColor () const
    +
    + +

    Get the fill color of the shape.

    +
    Returns
    Fill color of the shape
    +
    See also
    setFillColor
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Shape::getGlobalBounds () const
    +
    + +

    Get the global (non-minimal) bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

    +

    This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Shape::getLocalBounds () const
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getOutlineColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Shape::getOutlineColor () const
    +
    + +

    Get the outline color of the shape.

    +
    Returns
    Outline color of the shape
    +
    See also
    setOutlineColor
    + +
    +
    + +

    ◆ getOutlineThickness()

    + +
    +
    + + + + + + + +
    float sf::Shape::getOutlineThickness () const
    +
    + +

    Get the outline thickness of the shape.

    +
    Returns
    Outline thickness of the shape
    +
    See also
    setOutlineThickness
    + +
    +
    + +

    ◆ getPoint()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual Vector2f sf::Shape::getPoint (std::size_t index) const
    +
    +pure virtual
    +
    + +

    Get a point of the shape.

    +

    The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

    +
    Parameters
    + + +
    indexIndex of the point to get, in range [0 .. getPointCount() - 1]
    +
    +
    +
    Returns
    index-th point of the shape
    +
    See also
    getPointCount
    + +

    Implemented in sf::ConvexShape, sf::CircleShape, and sf::RectangleShape.

    + +
    +
    + +

    ◆ getPointCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::size_t sf::Shape::getPointCount () const
    +
    +pure virtual
    +
    + +

    Get the total number of points of the shape.

    +
    Returns
    Number of points of the shape
    +
    See also
    getPoint
    + +

    Implemented in sf::CircleShape, sf::RectangleShape, and sf::ConvexShape.

    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + + + +
    const Texture* sf::Shape::getTexture () const
    +
    + +

    Get the source texture of the shape.

    +

    If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

    +
    Returns
    Pointer to the shape's texture
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ getTextureRect()

    + +
    +
    + + + + + + + +
    const IntRect& sf::Shape::getTextureRect () const
    +
    + +

    Get the sub-rectangle of the texture displayed by the shape.

    +
    Returns
    Texture rectangle of the shape
    +
    See also
    setTextureRect
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setFillColor()

    + +
    +
    + + + + + + + + +
    void sf::Shape::setFillColor (const Colorcolor)
    +
    + +

    Set the fill color of the shape.

    +

    This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

    +
    Parameters
    + + +
    colorNew color of the shape
    +
    +
    +
    See also
    getFillColor, setOutlineColor
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOutlineColor()

    + +
    +
    + + + + + + + + +
    void sf::Shape::setOutlineColor (const Colorcolor)
    +
    + +

    Set the outline color of the shape.

    +

    By default, the shape's outline color is opaque white.

    +
    Parameters
    + + +
    colorNew outline color of the shape
    +
    +
    +
    See also
    getOutlineColor, setFillColor
    + +
    +
    + +

    ◆ setOutlineThickness()

    + +
    +
    + + + + + + + + +
    void sf::Shape::setOutlineThickness (float thickness)
    +
    + +

    Set the thickness of the shape's outline.

    +

    Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

    +
    Parameters
    + + +
    thicknessNew outline thickness
    +
    +
    +
    See also
    getOutlineThickness
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setTexture()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Shape::setTexture (const Texturetexture,
    bool resetRect = false 
    )
    +
    + +

    Change the source texture of the shape.

    +

    The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

    +
    Parameters
    + + + +
    textureNew texture
    resetRectShould the texture rect be reset to the size of the new texture?
    +
    +
    +
    See also
    getTexture, setTextureRect
    + +
    +
    + +

    ◆ setTextureRect()

    + +
    +
    + + + + + + + + +
    void sf::Shape::setTextureRect (const IntRectrect)
    +
    + +

    Set the sub-rectangle of the texture that the shape will display.

    +

    The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

    +
    Parameters
    + + +
    rectRectangle defining the region of the texture to display
    +
    +
    +
    See also
    getTextureRect, setTexture
    + +
    +
    + +

    ◆ update()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Shape::update ()
    +
    +protected
    +
    + +

    Recompute the internal geometry of the shape.

    +

    This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Shape.png b/SFML/doc/html/classsf_1_1Shape.png new file mode 100644 index 0000000000000000000000000000000000000000..83c20e77afaba5c2390de4178f3467b35e326b97 GIT binary patch literal 1486 zcmaJ>3pA8z82*P98{+JqTymR@wl!`WXF_7saP$*t2Fayyr!kqW+(vHEx>c%ajL6Uh zX_aA8iOk3)GMUqj$x7}<8W|(2Uq7?IcF(EKcJ@2xd%pKM?|a_cdEYPB)5Aq|?S{1g z0H}hyoCpAbN=D=yC3ys&yI;a1kCx|dFK3xdhKN(*g}5`VXA$YsZE0yy$bDsiP^DOc z2N6JwR!?uYmn8rw1cFXGyb@6}tQmSWT3ulPUob1{vfg|3QcmNeIL_@zp$Ck9{G?T) zIc!gGHO`=R1LzY*;Np3HVfn|pWCWWKR8(r0qB3lBlY~8+&)`7v7OV|L$du(-ouI6- z@2WZ{pq}N8+n4C=U(SJH;k9vBLcx%U%(j|Cvo76^YZ8ehVfQy^`8(+MEc)F#vS$S| z`9qxEPtmrw)9z>wxSyeQ{uCiGRsc2vA(q$v>m*;r-wk|#I;t8pyr_{<^ znhzHVg!~~UD@47cOCxyp5u3@f93^8ICGH|k1}g;`^SE%@l#LGsqh7Fl`uoq5oVun# z@0H+fB;JVmtti7ZeIK7F6K_{KSxjxHE{nNhPK^wV?~ATu38>ehqAcj@d9RUBtZY|m z#iVdt)>lk26^D#)^BlKS%_Y5*O#W^G#;xNE$Zb7_H@XETPb$Ur&!HubAt=jUMlc}= zVp@O+p%7C|J!eAxyI=^|;p^b2j!-98V`quGHUMu+O7|SK0+b#|Q6W>5vp9SC^cQ zHZ?#iAtQO^ZKJsyATPlu0rJ1$kP`4i0}hT#h|t#7JR|QE1OdUm_MiIyx$OVYG~d*r z#pNae#V!(RJ2Q0xEF(VHp+*EiSR8&|x?mpm}cTwNZuK>9n8jwRx( zu>9D+TLf3aHGGfklM@dUt*QReXz-Y>N{UVZeO&{yBWBIfhRC!5!C#HMnov^e>wWeS zlaWgwF2G~M^!m{djbqxB>`lgYNblUsF*4{+PQrnbSUh|Fq#0>$Y(y)u@gfQAJ~Mg0 zTEW83Y;;d%^9AQknSSDM2C=r{>9Ym51*{$x3Uwh`K+3vJBwW&9pgy;>@Q_isOXzEC z26ZQc*TCr5nn@N92GNAo=*>U&pW_8O_kSQ+=auF`zWn`!)OyY3RLQh3ppqT7w}5vb znwITWrf4xi+1L~=Du*d6BfVnNZuc#lU!9Wmag?$$3wFz2oF3Rcff zC#KF{_c7eNj<`%Or$5XZP~p;fHJX~7s)*XtDdg@#tdz2GrkDg?3CN;l5BxgY3nxkL z-3_-k-TG>Ne?58SczZWPmYW~nUu1_NlepLSxJC62)37l6&Z1j*F+jK zO4hi^A(~fE80$4|Qi*Kq&TtpHLuZVJLC+=IzUH5qveY#TjTlgY zDI-}{^?8GshJ9S4nIjjI!9S#`+P>Tgw`a|taL{)JjjLeDb!C+jTv6?j619;B>1%Zq S8G6X)3xLiZPBlA&GX4gz>&m(S literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Socket-members.html b/SFML/doc/html/classsf_1_1Socket-members.html new file mode 100644 index 0000000..f6ceacc --- /dev/null +++ b/SFML/doc/html/classsf_1_1Socket-members.html @@ -0,0 +1,82 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Socket Member List
    +
    +
    + +

    This is the complete list of members for sf::Socket, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    AnyPort enum valuesf::Socket
    close()sf::Socketprotected
    create()sf::Socketprotected
    create(SocketHandle handle)sf::Socketprotected
    Disconnected enum valuesf::Socket
    Done enum valuesf::Socket
    Error enum valuesf::Socket
    getHandle() constsf::Socketprotected
    isBlocking() constsf::Socket
    NonCopyable()sf::NonCopyableinlineprivate
    NotReady enum valuesf::Socket
    Partial enum valuesf::Socket
    setBlocking(bool blocking)sf::Socket
    Socket(Type type)sf::Socketprotected
    SocketSelector (defined in sf::Socket)sf::Socketfriend
    Status enum namesf::Socket
    Tcp enum valuesf::Socketprotected
    Type enum namesf::Socketprotected
    Udp enum valuesf::Socketprotected
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~Socket()sf::Socketvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Socket.html b/SFML/doc/html/classsf_1_1Socket.html new file mode 100644 index 0000000..badd19d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Socket.html @@ -0,0 +1,476 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Base class for all the socket types. + More...

    + +

    #include <Socket.hpp>

    +
    +Inheritance diagram for sf::Socket:
    +
    +
    + + +sf::NonCopyable +sf::TcpListener +sf::TcpSocket +sf::UdpSocket + +
    + + + + + + + + +

    +Public Types

    enum  Status {
    +  Done, +NotReady, +Partial, +Disconnected, +
    +  Error +
    + }
     Status codes that may be returned by socket functions. More...
     
    enum  { AnyPort = 0 + }
     Some special values used by sockets. More...
     
    + + + + + + + + + + +

    +Public Member Functions

    virtual ~Socket ()
     Destructor. More...
     
    void setBlocking (bool blocking)
     Set the blocking state of the socket. More...
     
    bool isBlocking () const
     Tell whether the socket is in blocking or non-blocking mode. More...
     
    + + + + +

    +Protected Types

    enum  Type { Tcp, +Udp + }
     Types of protocols that the socket can use. More...
     
    + + + + + + + + + + + + + + + + +

    +Protected Member Functions

     Socket (Type type)
     Default constructor. More...
     
    SocketHandle getHandle () const
     Return the internal handle of the socket. More...
     
    void create ()
     Create the internal representation of the socket. More...
     
    void create (SocketHandle handle)
     Create the internal representation of the socket from a socket handle. More...
     
    void close ()
     Close the socket gracefully. More...
     
    + + + +

    +Friends

    +class SocketSelector
     
    +

    Detailed Description

    +

    Base class for all the socket types.

    +

    This class mainly defines internal stuff to be used by derived classes.

    +

    The only public features that it defines, and which is therefore common to all the socket classes, is the blocking state. All sockets can be set as blocking or non-blocking.

    +

    In blocking mode, socket functions will hang until the operation completes, which means that the entire program (well, in fact the current thread if you use multiple ones) will be stuck waiting for your socket operation to complete.

    +

    In non-blocking mode, all the socket functions will return immediately. If the socket is not ready to complete the requested operation, the function simply returns the proper status code (Socket::NotReady).

    +

    The default mode, which is blocking, is the one that is generally used, in combination with threads or selectors. The non-blocking mode is rather used in real-time applications that run an endless loop that can poll the socket often enough, and cannot afford blocking this loop.

    +
    See also
    sf::TcpListener, sf::TcpSocket, sf::UdpSocket
    + +

    Definition at line 45 of file Socket.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + +
    anonymous enum
    +
    + +

    Some special values used by sockets.

    + + +
    Enumerator
    AnyPort 

    Special value that tells the system to pick any available port.

    +
    + +

    Definition at line 66 of file Socket.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + +
    enum sf::Socket::Status
    +
    + +

    Status codes that may be returned by socket functions.

    + + + + + + +
    Enumerator
    Done 

    The socket has sent / received the data.

    +
    NotReady 

    The socket is not ready to send / receive data yet.

    +
    Partial 

    The socket sent a part of the data.

    +
    Disconnected 

    The TCP socket has been disconnected.

    +
    Error 

    An unexpected error happened.

    +
    + +

    Definition at line 53 of file Socket.hpp.

    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Type
    +
    +protected
    +
    + +

    Types of protocols that the socket can use.

    + + + +
    Enumerator
    Tcp 

    TCP protocol.

    +
    Udp 

    UDP protocol.

    +
    + +

    Definition at line 114 of file Socket.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ ~Socket()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Socket::~Socket ()
    +
    +virtual
    +
    + +

    Destructor.

    + +
    +
    + +

    ◆ Socket()

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::Socket::Socket (Type type)
    +
    +protected
    +
    + +

    Default constructor.

    +

    This constructor can only be accessed by derived classes.

    +
    Parameters
    + + +
    typeType of the socket (TCP or UDP)
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ close()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::close ()
    +
    +protected
    +
    + +

    Close the socket gracefully.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::create ()
    +
    +protected
    +
    + +

    Create the internal representation of the socket.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::create (SocketHandle handle)
    +
    +protected
    +
    + +

    Create the internal representation of the socket from a socket handle.

    +

    This function can only be accessed by derived classes.

    +
    Parameters
    + + +
    handleOS-specific handle of the socket to wrap
    +
    +
    + +
    +
    + +

    ◆ getHandle()

    + +
    +
    + + + + + +
    + + + + + + + +
    SocketHandle sf::Socket::getHandle () const
    +
    +protected
    +
    + +

    Return the internal handle of the socket.

    +

    The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

    +
    Returns
    The internal (OS-specific) handle of the socket
    + +
    +
    + +

    ◆ isBlocking()

    + +
    +
    + + + + + + + +
    bool sf::Socket::isBlocking () const
    +
    + +

    Tell whether the socket is in blocking or non-blocking mode.

    +
    Returns
    True if the socket is blocking, false otherwise
    +
    See also
    setBlocking
    + +
    +
    + +

    ◆ setBlocking()

    + +
    +
    + + + + + + + + +
    void sf::Socket::setBlocking (bool blocking)
    +
    + +

    Set the blocking state of the socket.

    +

    In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

    +
    Parameters
    + + +
    blockingTrue to set the socket as blocking, false for non-blocking
    +
    +
    +
    See also
    isBlocking
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Socket.png b/SFML/doc/html/classsf_1_1Socket.png new file mode 100644 index 0000000000000000000000000000000000000000..4143c15ecb1dba4c0d01adf4b5e69abe7271c784 GIT binary patch literal 1245 zcmeAS@N?(olHy`uVBq!ia0y~yVDtyFJ2;quWI*T43LqsB;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z>?$X;uuoF_;&8aNs9~wT=~s||NU2A z-^?b|A#qc0Nt^ZQNEMe`GP^FXXKrkEO29|Hb7`<(_}fzPn2Q>@?fmS}$F- z=Rdo@{#gC=_wOfdXNu{0t|Ww0$*?OZ?JeH ztibo1rQ@(2&*)l6{zC&S-=8pT?L7UE8{`tjPJ$}ol z>vrANkzr+KwTt(B{4?P=gVc@ZIqUCvXP2Lk*?N9oRs6m6#%14rz6kxcbMHB?K))lc z=U3jl+h6tl{B*nJn(My%zp8!r&^3Af@81>w3m^WgyJGbg$qA?~+R<}9QKC(m!GJ+K zkAY2r1r#i0n*$m&fUfS@?Z?f^ambEQX`?TyH&D$02CBusE$45)E!)k&(Egz{<>zHZ z+%|$#BL@kbn*mIb^NYMSm-_GYIHBUn9-!wpiSL27;@jX!i#GUsb{)1;)#Upj6DQse0y!%%_IeB^K!;fpl5|_Wc+VZF6ck1&;b{y9Bw*7W>Cq8lJ zJLx_1fA-G#vGVtJ9c9~PV)0r`w)M_0H`|B_Z+g4$=+~CB{o2!~+>iWub=`#19hPx? z-{lp>?V?-5)1Dl9t`zh(_)<;I?;3eC{rr#GTAwGKO1_-Fd6T&I4dJ5D_kZn{zdZjh zF#hZBH(a+X%0EAP_Cx+kb^rPE&Su&RFQ|eQu9@%z2R`K@l z=T(c}-L(IHy*m9y*qW+?BJ5K%iwd9`pp}xZC zv)^_eT_cqczxVvzUq7!b+W(&GriPto)`lAKNmtI7?e)II{jL44mj^IZrGQve{kx{; z@0)uqJZ~Kjce=G)#T8T + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SocketSelector Member List
    +
    +
    + +

    This is the complete list of members for sf::SocketSelector, including all inherited members.

    + + + + + + + + + + +
    add(Socket &socket)sf::SocketSelector
    clear()sf::SocketSelector
    isReady(Socket &socket) constsf::SocketSelector
    operator=(const SocketSelector &right)sf::SocketSelector
    remove(Socket &socket)sf::SocketSelector
    SocketSelector()sf::SocketSelector
    SocketSelector(const SocketSelector &copy)sf::SocketSelector
    wait(Time timeout=Time::Zero)sf::SocketSelector
    ~SocketSelector()sf::SocketSelector
    + + + + diff --git a/SFML/doc/html/classsf_1_1SocketSelector.html b/SFML/doc/html/classsf_1_1SocketSelector.html new file mode 100644 index 0000000..ae79394 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SocketSelector.html @@ -0,0 +1,346 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::SocketSelector Class Reference
    +
    +
    + +

    Multiplexer that allows to read from multiple sockets. + More...

    + +

    #include <SocketSelector.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     SocketSelector ()
     Default constructor. More...
     
     SocketSelector (const SocketSelector &copy)
     Copy constructor. More...
     
     ~SocketSelector ()
     Destructor. More...
     
    void add (Socket &socket)
     Add a new socket to the selector. More...
     
    void remove (Socket &socket)
     Remove a socket from the selector. More...
     
    void clear ()
     Remove all the sockets stored in the selector. More...
     
    bool wait (Time timeout=Time::Zero)
     Wait until one or more sockets are ready to receive. More...
     
    bool isReady (Socket &socket) const
     Test a socket to know if it is ready to receive data. More...
     
    SocketSelectoroperator= (const SocketSelector &right)
     Overload of assignment operator. More...
     
    +

    Detailed Description

    +

    Multiplexer that allows to read from multiple sockets.

    +

    Socket selectors provide a way to wait until some data is available on a set of sockets, instead of just one.

    +

    This is convenient when you have multiple sockets that may possibly receive data, but you don't know which one will be ready first. In particular, it avoids to use a thread for each socket; with selectors, a single thread can handle all the sockets.

    +

    All types of sockets can be used in a selector:

    +

    A selector doesn't store its own copies of the sockets (socket classes are not copyable anyway), it simply keeps a reference to the original sockets that you pass to the "add" function. Therefore, you can't use the selector as a socket container, you must store them outside and make sure that they are alive as long as they are used in the selector.

    +

    Using a selector is simple:

      +
    • populate the selector with all the sockets that you want to observe
    • +
    • make it wait until there is data available on any of the sockets
    • +
    • test each socket to find out which ones are ready
    • +
    +

    Usage example:

    // Create a socket to listen to new connections
    sf::TcpListener listener;
    listener.listen(55001);
    // Create a list to store the future clients
    std::list<sf::TcpSocket*> clients;
    // Create a selector
    // Add the listener to the selector
    selector.add(listener);
    // Endless loop that waits for new connections
    while (running)
    {
    // Make the selector wait for data on any socket
    if (selector.wait())
    {
    // Test the listener
    if (selector.isReady(listener))
    {
    // The listener is ready: there is a pending connection
    if (listener.accept(*client) == sf::Socket::Done)
    {
    // Add the new client to the clients list
    clients.push_back(client);
    // Add the new client to the selector so that we will
    // be notified when he sends something
    selector.add(*client);
    }
    else
    {
    // Error, we won't get a new connection, delete the socket
    delete client;
    }
    }
    else
    {
    // The listener socket is not ready, test all other sockets (the clients)
    for (std::list<sf::TcpSocket*>::iterator it = clients.begin(); it != clients.end(); ++it)
    {
    sf::TcpSocket& client = **it;
    if (selector.isReady(client))
    {
    // The client has sent some data, we can receive it
    sf::Packet packet;
    if (client.receive(packet) == sf::Socket::Done)
    {
    ...
    }
    }
    }
    }
    }
    }
    See also
    sf::Socket
    + +

    Definition at line 43 of file SocketSelector.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ SocketSelector() [1/2]

    + +
    +
    + + + + + + + +
    sf::SocketSelector::SocketSelector ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ SocketSelector() [2/2]

    + +
    +
    + + + + + + + + +
    sf::SocketSelector::SocketSelector (const SocketSelectorcopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~SocketSelector()

    + +
    +
    + + + + + + + +
    sf::SocketSelector::~SocketSelector ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ add()

    + +
    +
    + + + + + + + + +
    void sf::SocketSelector::add (Socketsocket)
    +
    + +

    Add a new socket to the selector.

    +

    This function keeps a weak reference to the socket, so you have to make sure that the socket is not destroyed while it is stored in the selector. This function does nothing if the socket is not valid.

    +
    Parameters
    + + +
    socketReference to the socket to add
    +
    +
    +
    See also
    remove, clear
    + +
    +
    + +

    ◆ clear()

    + +
    +
    + + + + + + + +
    void sf::SocketSelector::clear ()
    +
    + +

    Remove all the sockets stored in the selector.

    +

    This function doesn't destroy any instance, it simply removes all the references that the selector has to external sockets.

    +
    See also
    add, remove
    + +
    +
    + +

    ◆ isReady()

    + +
    +
    + + + + + + + + +
    bool sf::SocketSelector::isReady (Socketsocket) const
    +
    + +

    Test a socket to know if it is ready to receive data.

    +

    This function must be used after a call to Wait, to know which sockets are ready to receive data. If a socket is ready, a call to receive will never block because we know that there is data available to read. Note that if this function returns true for a TcpListener, this means that it is ready to accept a new connection.

    +
    Parameters
    + + +
    socketSocket to test
    +
    +
    +
    Returns
    True if the socket is ready to read, false otherwise
    +
    See also
    isReady
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    SocketSelector& sf::SocketSelector::operator= (const SocketSelectorright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ remove()

    + +
    +
    + + + + + + + + +
    void sf::SocketSelector::remove (Socketsocket)
    +
    + +

    Remove a socket from the selector.

    +

    This function doesn't destroy the socket, it simply removes the reference that the selector has to it.

    +
    Parameters
    + + +
    socketReference to the socket to remove
    +
    +
    +
    See also
    add, clear
    + +
    +
    + +

    ◆ wait()

    + +
    +
    + + + + + + + + +
    bool sf::SocketSelector::wait (Time timeout = Time::Zero)
    +
    + +

    Wait until one or more sockets are ready to receive.

    +

    This function returns as soon as at least one socket has some data available to be received. To know which sockets are ready, use the isReady function. If you use a timeout and no socket is ready before the timeout is over, the function returns false.

    +
    Parameters
    + + +
    timeoutMaximum time to wait, (use Time::Zero for infinity)
    +
    +
    +
    Returns
    True if there are sockets ready, false otherwise
    +
    See also
    isReady
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sound-members.html b/SFML/doc/html/classsf_1_1Sound-members.html new file mode 100644 index 0000000..10dff03 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Sound-members.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Sound Member List
    +
    +
    + +

    This is the complete list of members for sf::Sound, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getAttenuation() constsf::SoundSource
    getBuffer() constsf::Sound
    getLoop() constsf::Sound
    getMinDistance() constsf::SoundSource
    getPitch() constsf::SoundSource
    getPlayingOffset() constsf::Sound
    getPosition() constsf::SoundSource
    getStatus() constsf::Soundvirtual
    getVolume() constsf::SoundSource
    isRelativeToListener() constsf::SoundSource
    m_sourcesf::SoundSourceprotected
    operator=(const Sound &right)sf::Sound
    sf::SoundSource::operator=(const SoundSource &right)sf::SoundSource
    pause()sf::Soundvirtual
    Paused enum valuesf::SoundSource
    play()sf::Soundvirtual
    Playing enum valuesf::SoundSource
    resetBuffer()sf::Sound
    setAttenuation(float attenuation)sf::SoundSource
    setBuffer(const SoundBuffer &buffer)sf::Sound
    setLoop(bool loop)sf::Sound
    setMinDistance(float distance)sf::SoundSource
    setPitch(float pitch)sf::SoundSource
    setPlayingOffset(Time timeOffset)sf::Sound
    setPosition(float x, float y, float z)sf::SoundSource
    setPosition(const Vector3f &position)sf::SoundSource
    setRelativeToListener(bool relative)sf::SoundSource
    setVolume(float volume)sf::SoundSource
    Sound()sf::Sound
    Sound(const SoundBuffer &buffer)sf::Soundexplicit
    Sound(const Sound &copy)sf::Sound
    SoundSource(const SoundSource &copy)sf::SoundSource
    SoundSource()sf::SoundSourceprotected
    Status enum namesf::SoundSource
    stop()sf::Soundvirtual
    Stopped enum valuesf::SoundSource
    ~Sound()sf::Sound
    ~SoundSource()sf::SoundSourcevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sound.html b/SFML/doc/html/classsf_1_1Sound.html new file mode 100644 index 0000000..4c41c07 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Sound.html @@ -0,0 +1,1123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Regular sound that can be played in the audio environment. + More...

    + +

    #include <Sound.hpp>

    +
    +Inheritance diagram for sf::Sound:
    +
    +
    + + +sf::SoundSource +sf::AlResource + +
    + + + + + +

    +Public Types

    enum  Status { Stopped, +Paused, +Playing + }
     Enumeration of the sound source states. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Sound ()
     Default constructor. More...
     
     Sound (const SoundBuffer &buffer)
     Construct the sound with a buffer. More...
     
     Sound (const Sound &copy)
     Copy constructor. More...
     
     ~Sound ()
     Destructor. More...
     
    void play ()
     Start or resume playing the sound. More...
     
    void pause ()
     Pause the sound. More...
     
    void stop ()
     stop playing the sound More...
     
    void setBuffer (const SoundBuffer &buffer)
     Set the source buffer containing the audio data to play. More...
     
    void setLoop (bool loop)
     Set whether or not the sound should loop after reaching the end. More...
     
    void setPlayingOffset (Time timeOffset)
     Change the current playing position of the sound. More...
     
    const SoundBuffergetBuffer () const
     Get the audio buffer attached to the sound. More...
     
    bool getLoop () const
     Tell whether or not the sound is in loop mode. More...
     
    Time getPlayingOffset () const
     Get the current playing position of the sound. More...
     
    Status getStatus () const
     Get the current status of the sound (stopped, paused, playing) More...
     
    Soundoperator= (const Sound &right)
     Overload of assignment operator. More...
     
    void resetBuffer ()
     Reset the internal buffer of the sound. More...
     
    void setPitch (float pitch)
     Set the pitch of the sound. More...
     
    void setVolume (float volume)
     Set the volume of the sound. More...
     
    void setPosition (float x, float y, float z)
     Set the 3D position of the sound in the audio scene. More...
     
    void setPosition (const Vector3f &position)
     Set the 3D position of the sound in the audio scene. More...
     
    void setRelativeToListener (bool relative)
     Make the sound's position relative to the listener or absolute. More...
     
    void setMinDistance (float distance)
     Set the minimum distance of the sound. More...
     
    void setAttenuation (float attenuation)
     Set the attenuation factor of the sound. More...
     
    float getPitch () const
     Get the pitch of the sound. More...
     
    float getVolume () const
     Get the volume of the sound. More...
     
    Vector3f getPosition () const
     Get the 3D position of the sound in the audio scene. More...
     
    bool isRelativeToListener () const
     Tell whether the sound's position is relative to the listener or is absolute. More...
     
    float getMinDistance () const
     Get the minimum distance of the sound. More...
     
    float getAttenuation () const
     Get the attenuation factor of the sound. More...
     
    + + + + +

    +Protected Attributes

    unsigned int m_source
     OpenAL source identifier. More...
     
    +

    Detailed Description

    +

    Regular sound that can be played in the audio environment.

    +

    sf::Sound is the class to use to play sounds.

    +

    It provides:

      +
    • Control (play, pause, stop)
    • +
    • Ability to modify output parameters in real-time (pitch, volume, ...)
    • +
    • 3D spatial features (position, attenuation, ...).
    • +
    +

    sf::Sound is perfect for playing short sounds that can fit in memory and require no latency, like foot steps or gun shots. For longer sounds, like background musics or long speeches, rather see sf::Music (which is based on streaming).

    +

    In order to work, a sound must be given a buffer of audio data to play. Audio data (samples) is stored in sf::SoundBuffer, and attached to a sound with the setBuffer() function. The buffer object attached to a sound must remain alive as long as the sound uses it. Note that multiple sounds can use the same sound buffer at the same time.

    +

    Usage example:

    buffer.loadFromFile("sound.wav");
    sf::Sound sound;
    sound.setBuffer(buffer);
    sound.play();
    See also
    sf::SoundBuffer, sf::Music
    + +

    Definition at line 45 of file Sound.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::SoundSource::Status
    +
    +inherited
    +
    + +

    Enumeration of the sound source states.

    + + + + +
    Enumerator
    Stopped 

    Sound is not playing.

    +
    Paused 

    Sound is paused.

    +
    Playing 

    Sound is playing.

    +
    + +

    Definition at line 50 of file SoundSource.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Sound() [1/3]

    + +
    +
    + + + + + + + +
    sf::Sound::Sound ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ Sound() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::Sound::Sound (const SoundBufferbuffer)
    +
    +explicit
    +
    + +

    Construct the sound with a buffer.

    +
    Parameters
    + + +
    bufferSound buffer containing the audio data to play with the sound
    +
    +
    + +
    +
    + +

    ◆ Sound() [3/3]

    + +
    +
    + + + + + + + + +
    sf::Sound::Sound (const Soundcopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~Sound()

    + +
    +
    + + + + + + + +
    sf::Sound::~Sound ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getAttenuation () const
    +
    +inherited
    +
    + +

    Get the attenuation factor of the sound.

    +
    Returns
    Attenuation factor of the sound
    +
    See also
    setAttenuation, getMinDistance
    + +
    +
    + +

    ◆ getBuffer()

    + +
    +
    + + + + + + + +
    const SoundBuffer* sf::Sound::getBuffer () const
    +
    + +

    Get the audio buffer attached to the sound.

    +
    Returns
    Sound buffer attached to the sound (can be NULL)
    + +
    +
    + +

    ◆ getLoop()

    + +
    +
    + + + + + + + +
    bool sf::Sound::getLoop () const
    +
    + +

    Tell whether or not the sound is in loop mode.

    +
    Returns
    True if the sound is looping, false otherwise
    +
    See also
    setLoop
    + +
    +
    + +

    ◆ getMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getMinDistance () const
    +
    +inherited
    +
    + +

    Get the minimum distance of the sound.

    +
    Returns
    Minimum distance of the sound
    +
    See also
    setMinDistance, getAttenuation
    + +
    +
    + +

    ◆ getPitch()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getPitch () const
    +
    +inherited
    +
    + +

    Get the pitch of the sound.

    +
    Returns
    Pitch of the sound
    +
    See also
    setPitch
    + +
    +
    + +

    ◆ getPlayingOffset()

    + +
    +
    + + + + + + + +
    Time sf::Sound::getPlayingOffset () const
    +
    + +

    Get the current playing position of the sound.

    +
    Returns
    Current playing position, from the beginning of the sound
    +
    See also
    setPlayingOffset
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    Vector3f sf::SoundSource::getPosition () const
    +
    +inherited
    +
    + +

    Get the 3D position of the sound in the audio scene.

    +
    Returns
    Position of the sound
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    Status sf::Sound::getStatus () const
    +
    +virtual
    +
    + +

    Get the current status of the sound (stopped, paused, playing)

    +
    Returns
    Current status of the sound
    + +

    Reimplemented from sf::SoundSource.

    + +
    +
    + +

    ◆ getVolume()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getVolume () const
    +
    +inherited
    +
    + +

    Get the volume of the sound.

    +
    Returns
    Volume of the sound, in the range [0, 100]
    +
    See also
    setVolume
    + +
    +
    + +

    ◆ isRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::SoundSource::isRelativeToListener () const
    +
    +inherited
    +
    + +

    Tell whether the sound's position is relative to the listener or is absolute.

    +
    Returns
    True if the position is relative, false if it's absolute
    +
    See also
    setRelativeToListener
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    Sound& sf::Sound::operator= (const Soundright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ pause()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Sound::pause ()
    +
    +virtual
    +
    + +

    Pause the sound.

    +

    This function pauses the sound if it was playing, otherwise (sound already paused or stopped) it has no effect.

    +
    See also
    play, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ play()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Sound::play ()
    +
    +virtual
    +
    + +

    Start or resume playing the sound.

    +

    This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from beginning if it was it already playing. This function uses its own thread so that it doesn't block the rest of the program while the sound is played.

    +
    See also
    pause, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ resetBuffer()

    + +
    +
    + + + + + + + +
    void sf::Sound::resetBuffer ()
    +
    + +

    Reset the internal buffer of the sound.

    +

    This function is for internal use only, you don't have to use it. It is called by the sf::SoundBuffer that this sound uses, when it is destroyed in order to prevent the sound from using a dead buffer.

    + +
    +
    + +

    ◆ setAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setAttenuation (float attenuation)
    +
    +inherited
    +
    + +

    Set the attenuation factor of the sound.

    +

    The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

    +
    Parameters
    + + +
    attenuationNew attenuation factor of the sound
    +
    +
    +
    See also
    getAttenuation, setMinDistance
    + +
    +
    + +

    ◆ setBuffer()

    + +
    +
    + + + + + + + + +
    void sf::Sound::setBuffer (const SoundBufferbuffer)
    +
    + +

    Set the source buffer containing the audio data to play.

    +

    It is important to note that the sound buffer is not copied, thus the sf::SoundBuffer instance must remain alive as long as it is attached to the sound.

    +
    Parameters
    + + +
    bufferSound buffer to attach to the sound
    +
    +
    +
    See also
    getBuffer
    + +
    +
    + +

    ◆ setLoop()

    + +
    +
    + + + + + + + + +
    void sf::Sound::setLoop (bool loop)
    +
    + +

    Set whether or not the sound should loop after reaching the end.

    +

    If set, the sound will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for sound is false.

    +
    Parameters
    + + +
    loopTrue to play in loop, false to play once
    +
    +
    +
    See also
    getLoop
    + +
    +
    + +

    ◆ setMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setMinDistance (float distance)
    +
    +inherited
    +
    + +

    Set the minimum distance of the sound.

    +

    The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

    +
    Parameters
    + + +
    distanceNew minimum distance of the sound
    +
    +
    +
    See also
    getMinDistance, setAttenuation
    + +
    +
    + +

    ◆ setPitch()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPitch (float pitch)
    +
    +inherited
    +
    + +

    Set the pitch of the sound.

    +

    The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

    +
    Parameters
    + + +
    pitchNew pitch to apply to the sound
    +
    +
    +
    See also
    getPitch
    + +
    +
    + +

    ◆ setPlayingOffset()

    + +
    +
    + + + + + + + + +
    void sf::Sound::setPlayingOffset (Time timeOffset)
    +
    + +

    Change the current playing position of the sound.

    +

    The playing position can be changed when the sound is either paused or playing. Changing the playing position when the sound is stopped has no effect, since playing the sound will reset its position.

    +
    Parameters
    + + +
    timeOffsetNew playing position, from the beginning of the sound
    +
    +
    +
    See also
    getPlayingOffset
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::SoundSource::setPosition (float x,
    float y,
    float z 
    )
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + + + +
    xX coordinate of the position of the sound in the scene
    yY coordinate of the position of the sound in the scene
    zZ coordinate of the position of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPosition (const Vector3fposition)
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + +
    positionPosition of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setRelativeToListener (bool relative)
    +
    +inherited
    +
    + +

    Make the sound's position relative to the listener or absolute.

    +

    Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

    +
    Parameters
    + + +
    relativeTrue to set the position relative, false to set it absolute
    +
    +
    +
    See also
    isRelativeToListener
    + +
    +
    + +

    ◆ setVolume()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setVolume (float volume)
    +
    +inherited
    +
    + +

    Set the volume of the sound.

    +

    The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

    +
    Parameters
    + + +
    volumeVolume of the sound
    +
    +
    +
    See also
    getVolume
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Sound::stop ()
    +
    +virtual
    +
    + +

    stop playing the sound

    +

    This function stops the sound if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

    +
    See also
    play, pause
    + +

    Implements sf::SoundSource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_source

    + +
    +
    + + + + + +
    + + + + +
    unsigned int sf::SoundSource::m_source
    +
    +protectedinherited
    +
    + +

    OpenAL source identifier.

    + +

    Definition at line 309 of file SoundSource.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sound.png b/SFML/doc/html/classsf_1_1Sound.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c235e81d4e49996d08ebeeb960bd9e9cd6e675 GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^nLymZ!3-oXyO`<&DTx4|5ZC|z{{xvX-h3_XKQsZz z0^e z33+Vl3)jxN9Jp+Dg3cC>EB}v3Ear6aG&6CuyJ`{0$XCsoHTzb>ttszTius#` zuD7w?do1MA^xEYs{cg|x#b#CFaxd?8#oL#r3qQ|NnY#a`?cCXH->;M&d%Zl|I{Na8 z@7vnv{91Z%@{;+7fKKR|t&%Ak9Nc3V#qhyQoI&`E&-Cu8r_PiJORjw5!w~joZ`U5R zhX0J~IUjufIE%qf9>K^&@yYv{P8y4irY)KG_UYys!oiW{@^hE&+*>VWY?ixw^|pxX z+rl^ewN=Wyzx$=YX4a=6s>x=yV$WKB%DkSrWv-3X@i&fNL(*UMFVao>VBELza=%aN z*^hdDK8tVO3aMK5uH)B}&$;tw9y6@<{aih3=B>x~=l2a7;y$Vm?5xhS z89ckQB{X1a;Pq*8+Z#f@O#VOP^7ij0s)=^TtJHGU`x)A7jK8{H5;Ok6DDmmfmtPGt zA7w9_v*>Ndd-JJ4cVCjN{W-61`y?sD|5uLIEd9=~j~8mOkFR1&!a@5LnObKASa)6n PrZ5IiS3j3^P6 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundBuffer Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundBuffer, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    AlResource()sf::AlResourceprivate
    getChannelCount() constsf::SoundBuffer
    getDuration() constsf::SoundBuffer
    getSampleCount() constsf::SoundBuffer
    getSampleRate() constsf::SoundBuffer
    getSamples() constsf::SoundBuffer
    loadFromFile(const std::string &filename)sf::SoundBuffer
    loadFromMemory(const void *data, std::size_t sizeInBytes)sf::SoundBuffer
    loadFromSamples(const Int16 *samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate)sf::SoundBuffer
    loadFromStream(InputStream &stream)sf::SoundBuffer
    operator=(const SoundBuffer &right)sf::SoundBuffer
    saveToFile(const std::string &filename) constsf::SoundBuffer
    Sound (defined in sf::SoundBuffer)sf::SoundBufferfriend
    SoundBuffer()sf::SoundBuffer
    SoundBuffer(const SoundBuffer &copy)sf::SoundBuffer
    ~AlResource()sf::AlResourceprivate
    ~SoundBuffer()sf::SoundBuffer
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundBuffer.html b/SFML/doc/html/classsf_1_1SoundBuffer.html new file mode 100644 index 0000000..4b924fe --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundBuffer.html @@ -0,0 +1,524 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::SoundBuffer Class Reference
    +
    +
    + +

    Storage for audio samples defining a sound. + More...

    + +

    #include <SoundBuffer.hpp>

    +
    +Inheritance diagram for sf::SoundBuffer:
    +
    +
    + + +sf::AlResource + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     SoundBuffer ()
     Default constructor. More...
     
     SoundBuffer (const SoundBuffer &copy)
     Copy constructor. More...
     
     ~SoundBuffer ()
     Destructor. More...
     
    bool loadFromFile (const std::string &filename)
     Load the sound buffer from a file. More...
     
    bool loadFromMemory (const void *data, std::size_t sizeInBytes)
     Load the sound buffer from a file in memory. More...
     
    bool loadFromStream (InputStream &stream)
     Load the sound buffer from a custom stream. More...
     
    bool loadFromSamples (const Int16 *samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate)
     Load the sound buffer from an array of audio samples. More...
     
    bool saveToFile (const std::string &filename) const
     Save the sound buffer to an audio file. More...
     
    const Int16 * getSamples () const
     Get the array of audio samples stored in the buffer. More...
     
    Uint64 getSampleCount () const
     Get the number of samples stored in the buffer. More...
     
    unsigned int getSampleRate () const
     Get the sample rate of the sound. More...
     
    unsigned int getChannelCount () const
     Get the number of channels used by the sound. More...
     
    Time getDuration () const
     Get the total duration of the sound. More...
     
    SoundBufferoperator= (const SoundBuffer &right)
     Overload of assignment operator. More...
     
    + + + +

    +Friends

    +class Sound
     
    +

    Detailed Description

    +

    Storage for audio samples defining a sound.

    +

    A sound buffer holds the data of a sound, which is an array of audio samples.

    +

    A sample is a 16 bits signed integer that defines the amplitude of the sound at a given time. The sound is then reconstituted by playing these samples at a high rate (for example, 44100 samples per second is the standard rate used for playing CDs). In short, audio samples are like texture pixels, and a sf::SoundBuffer is similar to a sf::Texture.

    +

    A sound buffer can be loaded from a file (see loadFromFile() for the complete list of supported formats), from memory, from a custom stream (see sf::InputStream) or directly from an array of samples. It can also be saved back to a file.

    +

    Sound buffers alone are not very useful: they hold the audio data but cannot be played. To do so, you need to use the sf::Sound class, which provides functions to play/pause/stop the sound as well as changing the way it is outputted (volume, pitch, 3D position, ...). This separation allows more flexibility and better performances: indeed a sf::SoundBuffer is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Sound is a lightweight object, which can use the audio data of a sound buffer and change the way it is played without actually modifying that data. Note that it is also possible to bind several sf::Sound instances to the same sf::SoundBuffer.

    +

    It is important to note that the sf::Sound instance doesn't copy the buffer that it uses, it only keeps a reference to it. Thus, a sf::SoundBuffer must not be destructed while it is used by a sf::Sound (i.e. never write a function that uses a local sf::SoundBuffer instance for loading a sound).

    +

    Usage example:

    // Declare a new sound buffer
    // Load it from a file
    if (!buffer.loadFromFile("sound.wav"))
    {
    // error...
    }
    // Create a sound source and bind it to the buffer
    sf::Sound sound1;
    sound1.setBuffer(buffer);
    // Play the sound
    sound1.play();
    // Create another sound source bound to the same buffer
    sf::Sound sound2;
    sound2.setBuffer(buffer);
    // Play it with a higher pitch -- the first sound remains unchanged
    sound2.setPitch(2);
    sound2.play();
    See also
    sf::Sound, sf::SoundBufferRecorder
    + +

    Definition at line 49 of file SoundBuffer.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ SoundBuffer() [1/2]

    + +
    +
    + + + + + + + +
    sf::SoundBuffer::SoundBuffer ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ SoundBuffer() [2/2]

    + +
    +
    + + + + + + + + +
    sf::SoundBuffer::SoundBuffer (const SoundBuffercopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~SoundBuffer()

    + +
    +
    + + + + + + + +
    sf::SoundBuffer::~SoundBuffer ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundBuffer::getChannelCount () const
    +
    + +

    Get the number of channels used by the sound.

    +

    If the sound is mono then the number of channels will be 1, 2 for stereo, etc.

    +
    Returns
    Number of channels
    +
    See also
    getSampleRate, getDuration
    + +
    +
    + +

    ◆ getDuration()

    + +
    +
    + + + + + + + +
    Time sf::SoundBuffer::getDuration () const
    +
    + +

    Get the total duration of the sound.

    +
    Returns
    Sound duration
    +
    See also
    getSampleRate, getChannelCount
    + +
    +
    + +

    ◆ getSampleCount()

    + +
    +
    + + + + + + + +
    Uint64 sf::SoundBuffer::getSampleCount () const
    +
    + +

    Get the number of samples stored in the buffer.

    +

    The array of samples can be accessed with the getSamples() function.

    +
    Returns
    Number of samples
    +
    See also
    getSamples
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundBuffer::getSampleRate () const
    +
    + +

    Get the sample rate of the sound.

    +

    The sample rate is the number of samples played per second. The higher, the better the quality (for example, 44100 samples/s is CD quality).

    +
    Returns
    Sample rate (number of samples per second)
    +
    See also
    getChannelCount, getDuration
    + +
    +
    + +

    ◆ getSamples()

    + +
    +
    + + + + + + + +
    const Int16* sf::SoundBuffer::getSamples () const
    +
    + +

    Get the array of audio samples stored in the buffer.

    +

    The format of the returned samples is 16 bits signed integer (sf::Int16). The total number of samples in this array is given by the getSampleCount() function.

    +
    Returns
    Read-only pointer to the array of sound samples
    +
    See also
    getSampleCount
    + +
    +
    + +

    ◆ loadFromFile()

    + +
    +
    + + + + + + + + +
    bool sf::SoundBuffer::loadFromFile (const std::string & filename)
    +
    + +

    Load the sound buffer from a file.

    +

    See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Parameters
    + + +
    filenamePath of the sound file to load
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromMemory, loadFromStream, loadFromSamples, saveToFile
    + +
    +
    + +

    ◆ loadFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::SoundBuffer::loadFromMemory (const void * data,
    std::size_t sizeInBytes 
    )
    +
    + +

    Load the sound buffer from a file in memory.

    +

    See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeInBytesSize of the data to load, in bytes
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromStream, loadFromSamples
    + +
    +
    + +

    ◆ loadFromSamples()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::SoundBuffer::loadFromSamples (const Int16 * samples,
    Uint64 sampleCount,
    unsigned int channelCount,
    unsigned int sampleRate 
    )
    +
    + +

    Load the sound buffer from an array of audio samples.

    +

    The assumed format of the audio samples is 16 bits signed integer (sf::Int16).

    +
    Parameters
    + + + + + +
    samplesPointer to the array of samples in memory
    sampleCountNumber of samples in the array
    channelCountNumber of channels (1 = mono, 2 = stereo, ...)
    sampleRateSample rate (number of samples to play per second)
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory, saveToFile
    + +
    +
    + +

    ◆ loadFromStream()

    + +
    +
    + + + + + + + + +
    bool sf::SoundBuffer::loadFromStream (InputStreamstream)
    +
    + +

    Load the sound buffer from a custom stream.

    +

    See the documentation of sf::InputSoundFile for the list of supported formats.

    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    True if loading succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory, loadFromSamples
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    SoundBuffer& sf::SoundBuffer::operator= (const SoundBufferright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ saveToFile()

    + +
    +
    + + + + + + + + +
    bool sf::SoundBuffer::saveToFile (const std::string & filename) const
    +
    + +

    Save the sound buffer to an audio file.

    +

    See the documentation of sf::OutputSoundFile for the list of supported formats.

    +
    Parameters
    + + +
    filenamePath of the sound file to write
    +
    +
    +
    Returns
    True if saving succeeded, false if it failed
    +
    See also
    loadFromFile, loadFromMemory, loadFromSamples
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundBuffer.png b/SFML/doc/html/classsf_1_1SoundBuffer.png new file mode 100644 index 0000000000000000000000000000000000000000..056a390a3ceec4d1a927d67557bfb4ff72f9f2c2 GIT binary patch literal 509 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004uNklIgZV2-<4yO!sV=KsRGsvHzMBid_+G~{;pi;c^@zQc+P0}QF-5USC-}( zt+`rXa?uxarK&nalcB2Gr^!%N?bAh!5JDI$fcNwO7_18zkH>h(1&jqT9C8H%V7z{# zi`fUjoizIZxQ}KZ0Qb@C1K>WIeE{4?|F{nkk- + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundBufferRecorder Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundBufferRecorder, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    getAvailableDevices()sf::SoundRecorderstatic
    getBuffer() constsf::SoundBufferRecorder
    getChannelCount() constsf::SoundRecorder
    getDefaultDevice()sf::SoundRecorderstatic
    getDevice() constsf::SoundRecorder
    getSampleRate() constsf::SoundRecorder
    isAvailable()sf::SoundRecorderstatic
    onProcessSamples(const Int16 *samples, std::size_t sampleCount)sf::SoundBufferRecorderprotectedvirtual
    onStart()sf::SoundBufferRecorderprotectedvirtual
    onStop()sf::SoundBufferRecorderprotectedvirtual
    setChannelCount(unsigned int channelCount)sf::SoundRecorder
    setDevice(const std::string &name)sf::SoundRecorder
    setProcessingInterval(Time interval)sf::SoundRecorderprotected
    SoundRecorder()sf::SoundRecorderprotected
    start(unsigned int sampleRate=44100)sf::SoundRecorder
    stop()sf::SoundRecorder
    ~SoundBufferRecorder()sf::SoundBufferRecorder
    ~SoundRecorder()sf::SoundRecordervirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundBufferRecorder.html b/SFML/doc/html/classsf_1_1SoundBufferRecorder.html new file mode 100644 index 0000000..2c43e57 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundBufferRecorder.html @@ -0,0 +1,645 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized SoundRecorder which stores the captured audio data into a sound buffer. + More...

    + +

    #include <SoundBufferRecorder.hpp>

    +
    +Inheritance diagram for sf::SoundBufferRecorder:
    +
    +
    + + +sf::SoundRecorder +sf::AlResource + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ~SoundBufferRecorder ()
     destructor More...
     
    const SoundBuffergetBuffer () const
     Get the sound buffer containing the captured audio data. More...
     
    bool start (unsigned int sampleRate=44100)
     Start the capture. More...
     
    void stop ()
     Stop the capture. More...
     
    unsigned int getSampleRate () const
     Get the sample rate. More...
     
    bool setDevice (const std::string &name)
     Set the audio capture device. More...
     
    const std::string & getDevice () const
     Get the name of the current audio capture device. More...
     
    void setChannelCount (unsigned int channelCount)
     Set the channel count of the audio capture device. More...
     
    unsigned int getChannelCount () const
     Get the number of channels used by this recorder. More...
     
    + + + + + + + + + + +

    +Static Public Member Functions

    static std::vector< std::string > getAvailableDevices ()
     Get a list of the names of all available audio capture devices. More...
     
    static std::string getDefaultDevice ()
     Get the name of the default audio capture device. More...
     
    static bool isAvailable ()
     Check if the system supports audio capture. More...
     
    + + + + + + + + + + + + + +

    +Protected Member Functions

    virtual bool onStart ()
     Start capturing audio data. More...
     
    virtual bool onProcessSamples (const Int16 *samples, std::size_t sampleCount)
     Process a new chunk of recorded samples. More...
     
    virtual void onStop ()
     Stop capturing audio data. More...
     
    void setProcessingInterval (Time interval)
     Set the processing interval. More...
     
    +

    Detailed Description

    +

    Specialized SoundRecorder which stores the captured audio data into a sound buffer.

    +

    sf::SoundBufferRecorder allows to access a recorded sound through a sf::SoundBuffer, so that it can be played, saved to a file, etc.

    +

    It has the same simple interface as its base class (start(), stop()) and adds a function to retrieve the recorded sound buffer (getBuffer()).

    +

    As usual, don't forget to call the isAvailable() function before using this class (see sf::SoundRecorder for more details about this).

    +

    Usage example:

    {
    // Record some audio data
    recorder.start();
    ...
    recorder.stop();
    // Get the buffer containing the captured audio data
    const sf::SoundBuffer& buffer = recorder.getBuffer();
    // Save it to a file (for example...)
    buffer.saveToFile("my_record.ogg");
    }
    See also
    sf::SoundRecorder
    + +

    Definition at line 44 of file SoundBufferRecorder.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~SoundBufferRecorder()

    + +
    +
    + + + + + + + +
    sf::SoundBufferRecorder::~SoundBufferRecorder ()
    +
    + +

    destructor

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAvailableDevices()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::vector<std::string> sf::SoundRecorder::getAvailableDevices ()
    +
    +staticinherited
    +
    + +

    Get a list of the names of all available audio capture devices.

    +

    This function returns a vector of strings, containing the names of all available audio capture devices.

    +
    Returns
    A vector of strings containing the names
    + +
    +
    + +

    ◆ getBuffer()

    + +
    +
    + + + + + + + +
    const SoundBuffer& sf::SoundBufferRecorder::getBuffer () const
    +
    + +

    Get the sound buffer containing the captured audio data.

    +

    The sound buffer is valid only after the capture has ended. This function provides a read-only access to the internal sound buffer, but it can be copied if you need to make any modification to it.

    +
    Returns
    Read-only access to the sound buffer
    + +
    +
    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int sf::SoundRecorder::getChannelCount () const
    +
    +inherited
    +
    + +

    Get the number of channels used by this recorder.

    +

    Currently only mono and stereo are supported, so the value is either 1 (for mono) or 2 (for stereo).

    +
    Returns
    Number of channels
    +
    See also
    setChannelCount
    + +
    +
    + +

    ◆ getDefaultDevice()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string sf::SoundRecorder::getDefaultDevice ()
    +
    +staticinherited
    +
    + +

    Get the name of the default audio capture device.

    +

    This function returns the name of the default audio capture device. If none is available, an empty string is returned.

    +
    Returns
    The name of the default audio capture device
    + +
    +
    + +

    ◆ getDevice()

    + +
    +
    + + + + + +
    + + + + + + + +
    const std::string& sf::SoundRecorder::getDevice () const
    +
    +inherited
    +
    + +

    Get the name of the current audio capture device.

    +
    Returns
    The name of the current audio capture device
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int sf::SoundRecorder::getSampleRate () const
    +
    +inherited
    +
    + +

    Get the sample rate.

    +

    The sample rate defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality).

    +
    Returns
    Sample rate, in samples per second
    + +
    +
    + +

    ◆ isAvailable()

    + +
    +
    + + + + + +
    + + + + + + + +
    static bool sf::SoundRecorder::isAvailable ()
    +
    +staticinherited
    +
    + +

    Check if the system supports audio capture.

    +

    This function should always be called before using the audio capture features. If it returns false, then any attempt to use sf::SoundRecorder or one of its derived classes will fail.

    +
    Returns
    True if audio capture is supported, false otherwise
    + +
    +
    + +

    ◆ onProcessSamples()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual bool sf::SoundBufferRecorder::onProcessSamples (const Int16 * samples,
    std::size_t sampleCount 
    )
    +
    +protectedvirtual
    +
    + +

    Process a new chunk of recorded samples.

    +
    Parameters
    + + + +
    samplesPointer to the new chunk of recorded samples
    sampleCountNumber of samples pointed by samples
    +
    +
    +
    Returns
    True to continue the capture, or false to stop it
    + +

    Implements sf::SoundRecorder.

    + +
    +
    + +

    ◆ onStart()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual bool sf::SoundBufferRecorder::onStart ()
    +
    +protectedvirtual
    +
    + +

    Start capturing audio data.

    +
    Returns
    True to start the capture, or false to abort it
    + +

    Reimplemented from sf::SoundRecorder.

    + +
    +
    + +

    ◆ onStop()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::SoundBufferRecorder::onStop ()
    +
    +protectedvirtual
    +
    + +

    Stop capturing audio data.

    + +

    Reimplemented from sf::SoundRecorder.

    + +
    +
    + +

    ◆ setChannelCount()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundRecorder::setChannelCount (unsigned int channelCount)
    +
    +inherited
    +
    + +

    Set the channel count of the audio capture device.

    +

    This method allows you to specify the number of channels used for recording. Currently only 16-bit mono and 16-bit stereo are supported.

    +
    Parameters
    + + +
    channelCountNumber of channels. Currently only mono (1) and stereo (2) are supported.
    +
    +
    +
    See also
    getChannelCount
    + +
    +
    + +

    ◆ setDevice()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::SoundRecorder::setDevice (const std::string & name)
    +
    +inherited
    +
    + +

    Set the audio capture device.

    +

    This function sets the audio capture device to the device with the given name. It can be called on the fly (i.e: while recording). If you do so while recording and opening the device fails, it stops the recording.

    +
    Parameters
    + + +
    nameThe name of the audio capture device
    +
    +
    +
    Returns
    True, if it was able to set the requested device
    +
    See also
    getAvailableDevices, getDefaultDevice
    + +
    +
    + +

    ◆ setProcessingInterval()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundRecorder::setProcessingInterval (Time interval)
    +
    +protectedinherited
    +
    + +

    Set the processing interval.

    +

    The processing interval controls the period between calls to the onProcessSamples function. You may want to use a small interval if you want to process the recorded data in real time, for example.

    +

    Note: this is only a hint, the actual period may vary. So don't rely on this parameter to implement precise timing.

    +

    The default processing interval is 100 ms.

    +
    Parameters
    + + +
    intervalProcessing interval
    +
    +
    + +
    +
    + +

    ◆ start()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool sf::SoundRecorder::start (unsigned int sampleRate = 44100)
    +
    +inherited
    +
    + +

    Start the capture.

    +

    The sampleRate parameter defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality). This function uses its own thread so that it doesn't block the rest of the program while the capture runs. Please note that only one capture can happen at the same time. You can select which capture device will be used, by passing the name to the setDevice() method. If none was selected before, the default capture device will be used. You can get a list of the names of all available capture devices by calling getAvailableDevices().

    +
    Parameters
    + + +
    sampleRateDesired capture rate, in number of samples per second
    +
    +
    +
    Returns
    True, if start of capture was successful
    +
    See also
    stop, getAvailableDevices
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundRecorder::stop ()
    +
    +inherited
    +
    + +

    Stop the capture.

    +
    See also
    start
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundBufferRecorder.png b/SFML/doc/html/classsf_1_1SoundBufferRecorder.png new file mode 100644 index 0000000000000000000000000000000000000000..f845c2c05019172fd8b9924118b545abded5273c GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^Gk~~*gBeKboVwHjq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0#XMacLn;{G&V4v(i2@JX?Eba2|K06m zMVWcB%AT)Vu`4H3JE_5}<>vk;b3XS>P|dV+@|k4QGDD@ZpmS-;t>dO^>nDAQv`H%a zxy5#E(pzoMU$*>5ugwYRtW@5%-+tZtb%!kfCDzUF%zgd-^cC%}Ce?MkZ+EM_>^h$G zwI(cQz2R%iA8gh^lhzgFq^g$PniF|*x76vdHxDB#WB#a0ex0~x`z9{gbe~D@K3u!8 z^~P+eY`%l>x4l+JbnmsE`r6s>r}XlmN&gHL)jZ{3&YBUa^L&mv%Y)<^#xp0@B*n*1 zo^@7hTgBN-v$YZjmbmO=uyHv?JgzZGwtQ}*oZ>mFUtqEdKggoIqd`{D>Cuy-rcKX2 zk$Of@!}I!`&bgEKM1>cxOX|P&ckPW|Z`Byhihn=$PVJ6Z7nUP`{m!-}VT{hFH{RIh z7r8%Y)!UnIb5~1;=BaLbIcdo}?~P_}OIO{y`%TJt@1&sq+9^xs&0d@1&ewbE&K?&1 zBWJ`tg3hOYoL@Zq(SG6VAXUw;GME3kyjinx;tb7c>84>*pR#Y;BvM~|W!9m(0xj=^ ztE!%|AN4&Ual~Qh`AHyY(vw8N)0WRU8GlIJXD~KeedGK0C25L%RU;2Z1C8IVYY2&Irke{{_4?mr5!!o`LCDd!tC|OeU+u z#yxlZ{B3tgUTI_avZpiS$hr3L*IB1R7s+4h+cEc9T+Z)1#);2npLd=9A$R5V9m!YU zK7GACo%>#M-_6|k+S{MvSl?)iZ_NF-sqUum?ajAuhnb%;;>lF%bJ(1tdhOX3zpJ}% z$2lk)1}Cerc-Vg1c>h${=61Kz-qOkyDLMCBXGmTV`)_$6d@IT&61wsg)MjQ$9 d%5?h2@O!VFgNNhWbHH4~;OXk;vd$@?2>?3Eo=*S( literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1SoundFileFactory-members.html b/SFML/doc/html/classsf_1_1SoundFileFactory-members.html new file mode 100644 index 0000000..4101f36 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileFactory-members.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundFileFactory Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundFileFactory, including all inherited members.

    + + + + + + + + + +
    createReaderFromFilename(const std::string &filename)sf::SoundFileFactorystatic
    createReaderFromMemory(const void *data, std::size_t sizeInBytes)sf::SoundFileFactorystatic
    createReaderFromStream(InputStream &stream)sf::SoundFileFactorystatic
    createWriterFromFilename(const std::string &filename)sf::SoundFileFactorystatic
    registerReader()sf::SoundFileFactorystatic
    registerWriter()sf::SoundFileFactorystatic
    unregisterReader()sf::SoundFileFactorystatic
    unregisterWriter()sf::SoundFileFactorystatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundFileFactory.html b/SFML/doc/html/classsf_1_1SoundFileFactory.html new file mode 100644 index 0000000..4502f17 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileFactory.html @@ -0,0 +1,389 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::SoundFileFactory Class Reference
    +
    +
    + +

    Manages and instantiates sound file readers and writers. + More...

    + +

    #include <SoundFileFactory.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename T >
    static void registerReader ()
     Register a new reader. More...
     
    template<typename T >
    static void unregisterReader ()
     Unregister a reader. More...
     
    template<typename T >
    static void registerWriter ()
     Register a new writer. More...
     
    template<typename T >
    static void unregisterWriter ()
     Unregister a writer. More...
     
    static SoundFileReadercreateReaderFromFilename (const std::string &filename)
     Instantiate the right reader for the given file on disk. More...
     
    static SoundFileReadercreateReaderFromMemory (const void *data, std::size_t sizeInBytes)
     Instantiate the right codec for the given file in memory. More...
     
    static SoundFileReadercreateReaderFromStream (InputStream &stream)
     Instantiate the right codec for the given file in stream. More...
     
    static SoundFileWritercreateWriterFromFilename (const std::string &filename)
     Instantiate the right writer for the given file on disk. More...
     
    +

    Detailed Description

    +

    Manages and instantiates sound file readers and writers.

    +

    This class is where all the sound file readers and writers are registered.

    +

    You should normally only need to use its registration and unregistration functions; readers/writers creation and manipulation are wrapped into the higher-level classes sf::InputSoundFile and sf::OutputSoundFile.

    +

    To register a new reader (writer) use the sf::SoundFileFactory::registerReader (registerWriter) static function. You don't have to call the unregisterReader (unregisterWriter) function, unless you want to unregister a format before your application ends (typically, when a plugin is unloaded).

    +

    Usage example:

    sf::SoundFileFactory::registerReader<MySoundFileReader>();
    sf::SoundFileFactory::registerWriter<MySoundFileWriter>();
    See also
    sf::InputSoundFile, sf::OutputSoundFile, sf::SoundFileReader, sf::SoundFileWriter
    + +

    Definition at line 46 of file SoundFileFactory.hpp.

    +

    Member Function Documentation

    + +

    ◆ createReaderFromFilename()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static SoundFileReader* sf::SoundFileFactory::createReaderFromFilename (const std::string & filename)
    +
    +static
    +
    + +

    Instantiate the right reader for the given file on disk.

    +

    It's up to the caller to release the returned reader

    +
    Parameters
    + + +
    filenamePath of the sound file
    +
    +
    +
    Returns
    A new sound file reader that can read the given file, or null if no reader can handle it
    +
    See also
    createReaderFromMemory, createReaderFromStream
    + +
    +
    + +

    ◆ createReaderFromMemory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static SoundFileReader* sf::SoundFileFactory::createReaderFromMemory (const void * data,
    std::size_t sizeInBytes 
    )
    +
    +static
    +
    + +

    Instantiate the right codec for the given file in memory.

    +

    It's up to the caller to release the returned reader

    +
    Parameters
    + + + +
    dataPointer to the file data in memory
    sizeInBytesTotal size of the file data, in bytes
    +
    +
    +
    Returns
    A new sound file codec that can read the given file, or null if no codec can handle it
    +
    See also
    createReaderFromFilename, createReaderFromStream
    + +
    +
    + +

    ◆ createReaderFromStream()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static SoundFileReader* sf::SoundFileFactory::createReaderFromStream (InputStreamstream)
    +
    +static
    +
    + +

    Instantiate the right codec for the given file in stream.

    +

    It's up to the caller to release the returned reader

    +
    Parameters
    + + +
    streamSource stream to read from
    +
    +
    +
    Returns
    A new sound file codec that can read the given file, or null if no codec can handle it
    +
    See also
    createReaderFromFilename, createReaderFromMemory
    + +
    +
    + +

    ◆ createWriterFromFilename()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static SoundFileWriter* sf::SoundFileFactory::createWriterFromFilename (const std::string & filename)
    +
    +static
    +
    + +

    Instantiate the right writer for the given file on disk.

    +

    It's up to the caller to release the returned writer

    +
    Parameters
    + + +
    filenamePath of the sound file
    +
    +
    +
    Returns
    A new sound file writer that can write given file, or null if no writer can handle it
    + +
    +
    + +

    ◆ registerReader()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static void sf::SoundFileFactory::registerReader ()
    +
    +static
    +
    + +

    Register a new reader.

    +
    See also
    unregisterReader
    + +
    +
    + +

    ◆ registerWriter()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static void sf::SoundFileFactory::registerWriter ()
    +
    +static
    +
    + +

    Register a new writer.

    +
    See also
    unregisterWriter
    + +
    +
    + +

    ◆ unregisterReader()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static void sf::SoundFileFactory::unregisterReader ()
    +
    +static
    +
    + +

    Unregister a reader.

    +
    See also
    registerReader
    + +
    +
    + +

    ◆ unregisterWriter()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static void sf::SoundFileFactory::unregisterWriter ()
    +
    +static
    +
    + +

    Unregister a writer.

    +
    See also
    registerWriter
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundFileReader-members.html b/SFML/doc/html/classsf_1_1SoundFileReader-members.html new file mode 100644 index 0000000..123d78b --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileReader-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundFileReader Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundFileReader, including all inherited members.

    + + + + + +
    open(InputStream &stream, Info &info)=0sf::SoundFileReaderpure virtual
    read(Int16 *samples, Uint64 maxCount)=0sf::SoundFileReaderpure virtual
    seek(Uint64 sampleOffset)=0sf::SoundFileReaderpure virtual
    ~SoundFileReader()sf::SoundFileReaderinlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundFileReader.html b/SFML/doc/html/classsf_1_1SoundFileReader.html new file mode 100644 index 0000000..f4960fa --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileReader.html @@ -0,0 +1,259 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::SoundFileReader Class Referenceabstract
    +
    +
    + +

    Abstract base class for sound file decoding. + More...

    + +

    #include <SoundFileReader.hpp>

    + + + + + +

    +Classes

    struct  Info
     Structure holding the audio properties of a sound file. More...
     
    + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~SoundFileReader ()
     Virtual destructor. More...
     
    virtual bool open (InputStream &stream, Info &info)=0
     Open a sound file for reading. More...
     
    virtual void seek (Uint64 sampleOffset)=0
     Change the current read position to the given sample offset. More...
     
    virtual Uint64 read (Int16 *samples, Uint64 maxCount)=0
     Read audio samples from the open file. More...
     
    +

    Detailed Description

    +

    Abstract base class for sound file decoding.

    +

    This class allows users to read audio file formats not natively supported by SFML, and thus extend the set of supported readable audio formats.

    +

    A valid sound file reader must override the open, seek and write functions, as well as providing a static check function; the latter is used by SFML to find a suitable writer for a given input file.

    +

    To register a new reader, use the sf::SoundFileFactory::registerReader template function.

    +

    Usage example:

    class MySoundFileReader : public sf::SoundFileReader
    {
    public:
    static bool check(sf::InputStream& stream)
    {
    // typically, read the first few header bytes and check fields that identify the format
    // return true if the reader can handle the format
    }
    virtual bool open(sf::InputStream& stream, Info& info)
    {
    // read the sound file header and fill the sound attributes
    // (channel count, sample count and sample rate)
    // return true on success
    }
    virtual void seek(sf::Uint64 sampleOffset)
    {
    // advance to the sampleOffset-th sample from the beginning of the sound
    }
    virtual sf::Uint64 read(sf::Int16* samples, sf::Uint64 maxCount)
    {
    // read up to 'maxCount' samples into the 'samples' array,
    // convert them (for example from normalized float) if they are not stored
    // as 16-bits signed integers in the file
    // return the actual number of samples read
    }
    };
    sf::SoundFileFactory::registerReader<MySoundFileReader>();
    See also
    sf::InputSoundFile, sf::SoundFileFactory, sf::SoundFileWriter
    + +

    Definition at line 43 of file SoundFileReader.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~SoundFileReader()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::SoundFileReader::~SoundFileReader ()
    +
    +inlinevirtual
    +
    + +

    Virtual destructor.

    + +

    Definition at line 62 of file SoundFileReader.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ open()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual bool sf::SoundFileReader::open (InputStreamstream,
    Infoinfo 
    )
    +
    +pure virtual
    +
    + +

    Open a sound file for reading.

    +

    The provided stream reference is valid as long as the SoundFileReader is alive, so it is safe to use/store it during the whole lifetime of the reader.

    +
    Parameters
    + + + +
    streamSource stream to read from
    infoStructure to fill with the properties of the loaded sound
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual Uint64 sf::SoundFileReader::read (Int16 * samples,
    Uint64 maxCount 
    )
    +
    +pure virtual
    +
    + +

    Read audio samples from the open file.

    +
    Parameters
    + + + +
    samplesPointer to the sample array to fill
    maxCountMaximum number of samples to read
    +
    +
    +
    Returns
    Number of samples actually read (may be less than maxCount)
    + +
    +
    + +

    ◆ seek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void sf::SoundFileReader::seek (Uint64 sampleOffset)
    +
    +pure virtual
    +
    + +

    Change the current read position to the given sample offset.

    +

    The sample offset takes the channels into account. If you have a time offset instead, you can easily find the corresponding sample offset with the following formula: timeInSeconds * sampleRate * channelCount If the given offset exceeds to total number of samples, this function must jump to the end of the file.

    +
    Parameters
    + + +
    sampleOffsetIndex of the sample to jump to, relative to the beginning
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundFileWriter-members.html b/SFML/doc/html/classsf_1_1SoundFileWriter-members.html new file mode 100644 index 0000000..db62de1 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileWriter-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundFileWriter Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundFileWriter, including all inherited members.

    + + + + +
    open(const std::string &filename, unsigned int sampleRate, unsigned int channelCount)=0sf::SoundFileWriterpure virtual
    write(const Int16 *samples, Uint64 count)=0sf::SoundFileWriterpure virtual
    ~SoundFileWriter()sf::SoundFileWriterinlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundFileWriter.html b/SFML/doc/html/classsf_1_1SoundFileWriter.html new file mode 100644 index 0000000..01fc7a6 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundFileWriter.html @@ -0,0 +1,219 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::SoundFileWriter Class Referenceabstract
    +
    +
    + +

    Abstract base class for sound file encoding. + More...

    + +

    #include <SoundFileWriter.hpp>

    + + + + + + + + + + + +

    +Public Member Functions

    virtual ~SoundFileWriter ()
     Virtual destructor. More...
     
    virtual bool open (const std::string &filename, unsigned int sampleRate, unsigned int channelCount)=0
     Open a sound file for writing. More...
     
    virtual void write (const Int16 *samples, Uint64 count)=0
     Write audio samples to the open file. More...
     
    +

    Detailed Description

    +

    Abstract base class for sound file encoding.

    +

    This class allows users to write audio file formats not natively supported by SFML, and thus extend the set of supported writable audio formats.

    +

    A valid sound file writer must override the open and write functions, as well as providing a static check function; the latter is used by SFML to find a suitable writer for a given filename.

    +

    To register a new writer, use the sf::SoundFileFactory::registerWriter template function.

    +

    Usage example:

    class MySoundFileWriter : public sf::SoundFileWriter
    {
    public:
    static bool check(const std::string& filename)
    {
    // typically, check the extension
    // return true if the writer can handle the format
    }
    virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount)
    {
    // open the file 'filename' for writing,
    // write the given sample rate and channel count to the file header
    // return true on success
    }
    virtual void write(const sf::Int16* samples, sf::Uint64 count)
    {
    // write 'count' samples stored at address 'samples',
    // convert them (for example to normalized float) if the format requires it
    }
    };
    sf::SoundFileFactory::registerWriter<MySoundFileWriter>();
    See also
    sf::OutputSoundFile, sf::SoundFileFactory, sf::SoundFileReader
    + +

    Definition at line 41 of file SoundFileWriter.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~SoundFileWriter()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::SoundFileWriter::~SoundFileWriter ()
    +
    +inlinevirtual
    +
    + +

    Virtual destructor.

    + +

    Definition at line 49 of file SoundFileWriter.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ open()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    virtual bool sf::SoundFileWriter::open (const std::string & filename,
    unsigned int sampleRate,
    unsigned int channelCount 
    )
    +
    +pure virtual
    +
    + +

    Open a sound file for writing.

    +
    Parameters
    + + + + +
    filenamePath of the file to open
    sampleRateSample rate of the sound
    channelCountNumber of channels of the sound
    +
    +
    +
    Returns
    True if the file was successfully opened
    + +
    +
    + +

    ◆ write()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void sf::SoundFileWriter::write (const Int16 * samples,
    Uint64 count 
    )
    +
    +pure virtual
    +
    + +

    Write audio samples to the open file.

    +
    Parameters
    + + + +
    samplesPointer to the sample array to write
    countNumber of samples to write
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundRecorder-members.html b/SFML/doc/html/classsf_1_1SoundRecorder-members.html new file mode 100644 index 0000000..a4f879a --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundRecorder-members.html @@ -0,0 +1,79 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundRecorder Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundRecorder, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    AlResource()sf::AlResourceprivate
    getAvailableDevices()sf::SoundRecorderstatic
    getChannelCount() constsf::SoundRecorder
    getDefaultDevice()sf::SoundRecorderstatic
    getDevice() constsf::SoundRecorder
    getSampleRate() constsf::SoundRecorder
    isAvailable()sf::SoundRecorderstatic
    onProcessSamples(const Int16 *samples, std::size_t sampleCount)=0sf::SoundRecorderprotectedpure virtual
    onStart()sf::SoundRecorderprotectedvirtual
    onStop()sf::SoundRecorderprotectedvirtual
    setChannelCount(unsigned int channelCount)sf::SoundRecorder
    setDevice(const std::string &name)sf::SoundRecorder
    setProcessingInterval(Time interval)sf::SoundRecorderprotected
    SoundRecorder()sf::SoundRecorderprotected
    start(unsigned int sampleRate=44100)sf::SoundRecorder
    stop()sf::SoundRecorder
    ~AlResource()sf::AlResourceprivate
    ~SoundRecorder()sf::SoundRecordervirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundRecorder.html b/SFML/doc/html/classsf_1_1SoundRecorder.html new file mode 100644 index 0000000..0c54a99 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundRecorder.html @@ -0,0 +1,618 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Abstract base class for capturing sound data. + More...

    + +

    #include <SoundRecorder.hpp>

    +
    +Inheritance diagram for sf::SoundRecorder:
    +
    +
    + + +sf::AlResource +sf::SoundBufferRecorder + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~SoundRecorder ()
     destructor More...
     
    bool start (unsigned int sampleRate=44100)
     Start the capture. More...
     
    void stop ()
     Stop the capture. More...
     
    unsigned int getSampleRate () const
     Get the sample rate. More...
     
    bool setDevice (const std::string &name)
     Set the audio capture device. More...
     
    const std::string & getDevice () const
     Get the name of the current audio capture device. More...
     
    void setChannelCount (unsigned int channelCount)
     Set the channel count of the audio capture device. More...
     
    unsigned int getChannelCount () const
     Get the number of channels used by this recorder. More...
     
    + + + + + + + + + + +

    +Static Public Member Functions

    static std::vector< std::string > getAvailableDevices ()
     Get a list of the names of all available audio capture devices. More...
     
    static std::string getDefaultDevice ()
     Get the name of the default audio capture device. More...
     
    static bool isAvailable ()
     Check if the system supports audio capture. More...
     
    + + + + + + + + + + + + + + + + +

    +Protected Member Functions

     SoundRecorder ()
     Default constructor. More...
     
    void setProcessingInterval (Time interval)
     Set the processing interval. More...
     
    virtual bool onStart ()
     Start capturing audio data. More...
     
    virtual bool onProcessSamples (const Int16 *samples, std::size_t sampleCount)=0
     Process a new chunk of recorded samples. More...
     
    virtual void onStop ()
     Stop capturing audio data. More...
     
    +

    Detailed Description

    +

    Abstract base class for capturing sound data.

    +

    sf::SoundBuffer provides a simple interface to access the audio recording capabilities of the computer (the microphone).

    +

    As an abstract base class, it only cares about capturing sound samples, the task of making something useful with them is left to the derived class. Note that SFML provides a built-in specialization for saving the captured data to a sound buffer (see sf::SoundBufferRecorder).

    +

    A derived class has only one virtual function to override:

      +
    • onProcessSamples provides the new chunks of audio samples while the capture happens
    • +
    +

    Moreover, two additional virtual functions can be overridden as well if necessary:

      +
    • onStart is called before the capture happens, to perform custom initializations
    • +
    • onStop is called after the capture ends, to perform custom cleanup
    • +
    +

    A derived class can also control the frequency of the onProcessSamples calls, with the setProcessingInterval protected function. The default interval is chosen so that recording thread doesn't consume too much CPU, but it can be changed to a smaller value if you need to process the recorded data in real time, for example.

    +

    The audio capture feature may not be supported or activated on every platform, thus it is recommended to check its availability with the isAvailable() function. If it returns false, then any attempt to use an audio recorder will fail.

    +

    If you have multiple sound input devices connected to your computer (for example: microphone, external soundcard, webcam mic, ...) you can get a list of all available devices through the getAvailableDevices() function. You can then select a device by calling setDevice() with the appropriate device. Otherwise the default capturing device will be used.

    +

    By default the recording is in 16-bit mono. Using the setChannelCount method you can change the number of channels used by the audio capture device to record. Note that you have to decide whether you want to record in mono or stereo before starting the recording.

    +

    It is important to note that the audio capture happens in a separate thread, so that it doesn't block the rest of the program. In particular, the onProcessSamples virtual function (but not onStart and not onStop) will be called from this separate thread. It is important to keep this in mind, because you may have to take care of synchronization issues if you share data between threads. Another thing to bear in mind is that you must call stop() in the destructor of your derived class, so that the recording thread finishes before your object is destroyed.

    +

    Usage example:

    class CustomRecorder : public sf::SoundRecorder
    {
    ~CustomRecorder()
    {
    // Make sure to stop the recording thread
    stop();
    }
    virtual bool onStart() // optional
    {
    // Initialize whatever has to be done before the capture starts
    ...
    // Return true to start playing
    return true;
    }
    virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount)
    {
    // Do something with the new chunk of samples (store them, send them, ...)
    ...
    // Return true to continue playing
    return true;
    }
    virtual void onStop() // optional
    {
    // Clean up whatever has to be done after the capture ends
    ...
    }
    }
    // Usage
    if (CustomRecorder::isAvailable())
    {
    CustomRecorder recorder;
    if (!recorder.start())
    return -1;
    ...
    recorder.stop();
    }
    See also
    sf::SoundBufferRecorder
    + +

    Definition at line 45 of file SoundRecorder.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~SoundRecorder()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::SoundRecorder::~SoundRecorder ()
    +
    +virtual
    +
    + +

    destructor

    + +
    +
    + +

    ◆ SoundRecorder()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::SoundRecorder::SoundRecorder ()
    +
    +protected
    +
    + +

    Default constructor.

    +

    This constructor is only meant to be called by derived classes.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAvailableDevices()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::vector<std::string> sf::SoundRecorder::getAvailableDevices ()
    +
    +static
    +
    + +

    Get a list of the names of all available audio capture devices.

    +

    This function returns a vector of strings, containing the names of all available audio capture devices.

    +
    Returns
    A vector of strings containing the names
    + +
    +
    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundRecorder::getChannelCount () const
    +
    + +

    Get the number of channels used by this recorder.

    +

    Currently only mono and stereo are supported, so the value is either 1 (for mono) or 2 (for stereo).

    +
    Returns
    Number of channels
    +
    See also
    setChannelCount
    + +
    +
    + +

    ◆ getDefaultDevice()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string sf::SoundRecorder::getDefaultDevice ()
    +
    +static
    +
    + +

    Get the name of the default audio capture device.

    +

    This function returns the name of the default audio capture device. If none is available, an empty string is returned.

    +
    Returns
    The name of the default audio capture device
    + +
    +
    + +

    ◆ getDevice()

    + +
    +
    + + + + + + + +
    const std::string& sf::SoundRecorder::getDevice () const
    +
    + +

    Get the name of the current audio capture device.

    +
    Returns
    The name of the current audio capture device
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundRecorder::getSampleRate () const
    +
    + +

    Get the sample rate.

    +

    The sample rate defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality).

    +
    Returns
    Sample rate, in samples per second
    + +
    +
    + +

    ◆ isAvailable()

    + +
    +
    + + + + + +
    + + + + + + + +
    static bool sf::SoundRecorder::isAvailable ()
    +
    +static
    +
    + +

    Check if the system supports audio capture.

    +

    This function should always be called before using the audio capture features. If it returns false, then any attempt to use sf::SoundRecorder or one of its derived classes will fail.

    +
    Returns
    True if audio capture is supported, false otherwise
    + +
    +
    + +

    ◆ onProcessSamples()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual bool sf::SoundRecorder::onProcessSamples (const Int16 * samples,
    std::size_t sampleCount 
    )
    +
    +protectedpure virtual
    +
    + +

    Process a new chunk of recorded samples.

    +

    This virtual function is called every time a new chunk of recorded data is available. The derived class can then do whatever it wants with it (storing it, playing it, sending it over the network, etc.).

    +
    Parameters
    + + + +
    samplesPointer to the new chunk of recorded samples
    sampleCountNumber of samples pointed by samples
    +
    +
    +
    Returns
    True to continue the capture, or false to stop it
    + +

    Implemented in sf::SoundBufferRecorder.

    + +
    +
    + +

    ◆ onStart()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual bool sf::SoundRecorder::onStart ()
    +
    +protectedvirtual
    +
    + +

    Start capturing audio data.

    +

    This virtual function may be overridden by a derived class if something has to be done every time a new capture starts. If not, this function can be ignored; the default implementation does nothing.

    +
    Returns
    True to start the capture, or false to abort it
    + +

    Reimplemented in sf::SoundBufferRecorder.

    + +
    +
    + +

    ◆ onStop()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::SoundRecorder::onStop ()
    +
    +protectedvirtual
    +
    + +

    Stop capturing audio data.

    +

    This virtual function may be overridden by a derived class if something has to be done every time the capture ends. If not, this function can be ignored; the default implementation does nothing.

    + +

    Reimplemented in sf::SoundBufferRecorder.

    + +
    +
    + +

    ◆ setChannelCount()

    + +
    +
    + + + + + + + + +
    void sf::SoundRecorder::setChannelCount (unsigned int channelCount)
    +
    + +

    Set the channel count of the audio capture device.

    +

    This method allows you to specify the number of channels used for recording. Currently only 16-bit mono and 16-bit stereo are supported.

    +
    Parameters
    + + +
    channelCountNumber of channels. Currently only mono (1) and stereo (2) are supported.
    +
    +
    +
    See also
    getChannelCount
    + +
    +
    + +

    ◆ setDevice()

    + +
    +
    + + + + + + + + +
    bool sf::SoundRecorder::setDevice (const std::string & name)
    +
    + +

    Set the audio capture device.

    +

    This function sets the audio capture device to the device with the given name. It can be called on the fly (i.e: while recording). If you do so while recording and opening the device fails, it stops the recording.

    +
    Parameters
    + + +
    nameThe name of the audio capture device
    +
    +
    +
    Returns
    True, if it was able to set the requested device
    +
    See also
    getAvailableDevices, getDefaultDevice
    + +
    +
    + +

    ◆ setProcessingInterval()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundRecorder::setProcessingInterval (Time interval)
    +
    +protected
    +
    + +

    Set the processing interval.

    +

    The processing interval controls the period between calls to the onProcessSamples function. You may want to use a small interval if you want to process the recorded data in real time, for example.

    +

    Note: this is only a hint, the actual period may vary. So don't rely on this parameter to implement precise timing.

    +

    The default processing interval is 100 ms.

    +
    Parameters
    + + +
    intervalProcessing interval
    +
    +
    + +
    +
    + +

    ◆ start()

    + +
    +
    + + + + + + + + +
    bool sf::SoundRecorder::start (unsigned int sampleRate = 44100)
    +
    + +

    Start the capture.

    +

    The sampleRate parameter defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality). This function uses its own thread so that it doesn't block the rest of the program while the capture runs. Please note that only one capture can happen at the same time. You can select which capture device will be used, by passing the name to the setDevice() method. If none was selected before, the default capture device will be used. You can get a list of the names of all available capture devices by calling getAvailableDevices().

    +
    Parameters
    + + +
    sampleRateDesired capture rate, in number of samples per second
    +
    +
    +
    Returns
    True, if start of capture was successful
    +
    See also
    stop, getAvailableDevices
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + + + +
    void sf::SoundRecorder::stop ()
    +
    + +

    Stop the capture.

    +
    See also
    start
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundRecorder.png b/SFML/doc/html/classsf_1_1SoundRecorder.png new file mode 100644 index 0000000000000000000000000000000000000000..43a5f7e080f022e1db75478eb7d15cd6c5e10558 GIT binary patch literal 906 zcmeAS@N?(olHy`uVBq!ia0vp^Gk~~*gBeKboVwHjq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0B|TjnLn;{G&V4;;v4Vgbzx>KQ|CQIf zU158)H2se5s%`17Tw2`vd?)`=eLly%MaT28VA7-~ibqsVHhb%+UXHWB{72pM{3F55 zrKDoecPJ&X)D9mux#I9w&ne#CB}K( zSI=)wT6%2F^MlqmW=<+;OV-xjcsK35*UK!O=#8_}pO$^hKe?hmW$)C`7lp@EUUKF4 z&h4&Ux$&96pRH@RbZxz{J=pSoj#~ZW5U)%2YCz{WcX&=}7nrQVuiX7~&gTXOn`7Jw zE^eaLd)Z8-Lvub!UCxOxY;f$XVXWxrAs$zlBx^1;QBrC6$YIF9ugLb`VNi~h+_N7{ zGKRc*$2lMLM6cW-blcs2?dAuOZ?5gyFFO1FU6liA>+aNrOzU`Boi42XdDiJkSF|1! z{MUWe4~o+4$u*WuO1?F_c!(Kq|#q_*z- z$uX~Era8k4OWl8eZ!Y_>{>ZEl#+B){Z~TvZld={vK3cT?*s4u63EJBq<@ZGe-!S)k zDi%@7SaQT)sG(he`GY_bgPar3fx{}(g1nfSK1k#@2ug;&`73uNCuHNvY@f}EM<0bS z{eXH(@d$%Wiv+Sh=MKgSB*{PWNtVz5h`gUuT*t9VrPm!6)@viYsHRy!qT|Z_XH-6~y%=I-R4cVHwSZ6Opz4dy z`~Bk7!=|gg4|RyF6po&^f9?Laoo_Y2ZM%AQlT4e5VD^H@Z9>__QOjT5UMg~7;*6Ds z!b+N7Z``iazJ1otWL5T>)6S~Nzx|G!S+ecN_s(Tm^-9;|+HQFSz1ldLFYArRnGmP= z + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundSource Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundSource, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AlResource()sf::AlResourceprivate
    getAttenuation() constsf::SoundSource
    getMinDistance() constsf::SoundSource
    getPitch() constsf::SoundSource
    getPosition() constsf::SoundSource
    getStatus() constsf::SoundSourcevirtual
    getVolume() constsf::SoundSource
    isRelativeToListener() constsf::SoundSource
    m_sourcesf::SoundSourceprotected
    operator=(const SoundSource &right)sf::SoundSource
    pause()=0sf::SoundSourcepure virtual
    Paused enum valuesf::SoundSource
    play()=0sf::SoundSourcepure virtual
    Playing enum valuesf::SoundSource
    setAttenuation(float attenuation)sf::SoundSource
    setMinDistance(float distance)sf::SoundSource
    setPitch(float pitch)sf::SoundSource
    setPosition(float x, float y, float z)sf::SoundSource
    setPosition(const Vector3f &position)sf::SoundSource
    setRelativeToListener(bool relative)sf::SoundSource
    setVolume(float volume)sf::SoundSource
    SoundSource(const SoundSource &copy)sf::SoundSource
    SoundSource()sf::SoundSourceprotected
    Status enum namesf::SoundSource
    stop()=0sf::SoundSourcepure virtual
    Stopped enum valuesf::SoundSource
    ~AlResource()sf::AlResourceprivate
    ~SoundSource()sf::SoundSourcevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundSource.html b/SFML/doc/html/classsf_1_1SoundSource.html new file mode 100644 index 0000000..1bfa183 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundSource.html @@ -0,0 +1,804 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Base class defining a sound's properties. + More...

    + +

    #include <SoundSource.hpp>

    +
    +Inheritance diagram for sf::SoundSource:
    +
    +
    + + +sf::AlResource +sf::Sound +sf::SoundStream +sf::Music + +
    + + + + + +

    +Public Types

    enum  Status { Stopped, +Paused, +Playing + }
     Enumeration of the sound source states. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     SoundSource (const SoundSource &copy)
     Copy constructor. More...
     
    virtual ~SoundSource ()
     Destructor. More...
     
    void setPitch (float pitch)
     Set the pitch of the sound. More...
     
    void setVolume (float volume)
     Set the volume of the sound. More...
     
    void setPosition (float x, float y, float z)
     Set the 3D position of the sound in the audio scene. More...
     
    void setPosition (const Vector3f &position)
     Set the 3D position of the sound in the audio scene. More...
     
    void setRelativeToListener (bool relative)
     Make the sound's position relative to the listener or absolute. More...
     
    void setMinDistance (float distance)
     Set the minimum distance of the sound. More...
     
    void setAttenuation (float attenuation)
     Set the attenuation factor of the sound. More...
     
    float getPitch () const
     Get the pitch of the sound. More...
     
    float getVolume () const
     Get the volume of the sound. More...
     
    Vector3f getPosition () const
     Get the 3D position of the sound in the audio scene. More...
     
    bool isRelativeToListener () const
     Tell whether the sound's position is relative to the listener or is absolute. More...
     
    float getMinDistance () const
     Get the minimum distance of the sound. More...
     
    float getAttenuation () const
     Get the attenuation factor of the sound. More...
     
    SoundSourceoperator= (const SoundSource &right)
     Overload of assignment operator. More...
     
    virtual void play ()=0
     Start or resume playing the sound source. More...
     
    virtual void pause ()=0
     Pause the sound source. More...
     
    virtual void stop ()=0
     Stop playing the sound source. More...
     
    virtual Status getStatus () const
     Get the current status of the sound (stopped, paused, playing) More...
     
    + + + + +

    +Protected Member Functions

     SoundSource ()
     Default constructor. More...
     
    + + + + +

    +Protected Attributes

    unsigned int m_source
     OpenAL source identifier. More...
     
    +

    Detailed Description

    +

    Base class defining a sound's properties.

    +

    sf::SoundSource is not meant to be used directly, it only serves as a common base for all audio objects that can live in the audio environment.

    +

    It defines several properties for the sound: pitch, volume, position, attenuation, etc. All of them can be changed at any time with no impact on performances.

    +
    See also
    sf::Sound, sf::SoundStream
    + +

    Definition at line 42 of file SoundSource.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Status

    + +
    +
    + + + + +
    enum sf::SoundSource::Status
    +
    + +

    Enumeration of the sound source states.

    + + + + +
    Enumerator
    Stopped 

    Sound is not playing.

    +
    Paused 

    Sound is paused.

    +
    Playing 

    Sound is playing.

    +
    + +

    Definition at line 50 of file SoundSource.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ SoundSource() [1/2]

    + +
    +
    + + + + + + + + +
    sf::SoundSource::SoundSource (const SoundSourcecopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~SoundSource()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::SoundSource::~SoundSource ()
    +
    +virtual
    +
    + +

    Destructor.

    + +
    +
    + +

    ◆ SoundSource() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::SoundSource::SoundSource ()
    +
    +protected
    +
    + +

    Default constructor.

    +

    This constructor is meant to be called by derived classes only.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAttenuation()

    + +
    +
    + + + + + + + +
    float sf::SoundSource::getAttenuation () const
    +
    + +

    Get the attenuation factor of the sound.

    +
    Returns
    Attenuation factor of the sound
    +
    See also
    setAttenuation, getMinDistance
    + +
    +
    + +

    ◆ getMinDistance()

    + +
    +
    + + + + + + + +
    float sf::SoundSource::getMinDistance () const
    +
    + +

    Get the minimum distance of the sound.

    +
    Returns
    Minimum distance of the sound
    +
    See also
    setMinDistance, getAttenuation
    + +
    +
    + +

    ◆ getPitch()

    + +
    +
    + + + + + + + +
    float sf::SoundSource::getPitch () const
    +
    + +

    Get the pitch of the sound.

    +
    Returns
    Pitch of the sound
    +
    See also
    setPitch
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + + + +
    Vector3f sf::SoundSource::getPosition () const
    +
    + +

    Get the 3D position of the sound in the audio scene.

    +
    Returns
    Position of the sound
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Status sf::SoundSource::getStatus () const
    +
    +virtual
    +
    + +

    Get the current status of the sound (stopped, paused, playing)

    +
    Returns
    Current status of the sound
    + +

    Reimplemented in sf::Sound, and sf::SoundStream.

    + +
    +
    + +

    ◆ getVolume()

    + +
    +
    + + + + + + + +
    float sf::SoundSource::getVolume () const
    +
    + +

    Get the volume of the sound.

    +
    Returns
    Volume of the sound, in the range [0, 100]
    +
    See also
    setVolume
    + +
    +
    + +

    ◆ isRelativeToListener()

    + +
    +
    + + + + + + + +
    bool sf::SoundSource::isRelativeToListener () const
    +
    + +

    Tell whether the sound's position is relative to the listener or is absolute.

    +
    Returns
    True if the position is relative, false if it's absolute
    +
    See also
    setRelativeToListener
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    SoundSource& sf::SoundSource::operator= (const SoundSourceright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ pause()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::SoundSource::pause ()
    +
    +pure virtual
    +
    + +

    Pause the sound source.

    +

    This function pauses the source if it was playing, otherwise (source already paused or stopped) it has no effect.

    +
    See also
    play, stop
    + +

    Implemented in sf::Sound, and sf::SoundStream.

    + +
    +
    + +

    ◆ play()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::SoundSource::play ()
    +
    +pure virtual
    +
    + +

    Start or resume playing the sound source.

    +

    This function starts the source if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing.

    +
    See also
    pause, stop
    + +

    Implemented in sf::Sound, and sf::SoundStream.

    + +
    +
    + +

    ◆ setAttenuation()

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setAttenuation (float attenuation)
    +
    + +

    Set the attenuation factor of the sound.

    +

    The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

    +
    Parameters
    + + +
    attenuationNew attenuation factor of the sound
    +
    +
    +
    See also
    getAttenuation, setMinDistance
    + +
    +
    + +

    ◆ setMinDistance()

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setMinDistance (float distance)
    +
    + +

    Set the minimum distance of the sound.

    +

    The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

    +
    Parameters
    + + +
    distanceNew minimum distance of the sound
    +
    +
    +
    See also
    getMinDistance, setAttenuation
    + +
    +
    + +

    ◆ setPitch()

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setPitch (float pitch)
    +
    + +

    Set the pitch of the sound.

    +

    The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

    +
    Parameters
    + + +
    pitchNew pitch to apply to the sound
    +
    +
    +
    See also
    getPitch
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::SoundSource::setPosition (float x,
    float y,
    float z 
    )
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + + + +
    xX coordinate of the position of the sound in the scene
    yY coordinate of the position of the sound in the scene
    zZ coordinate of the position of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setPosition (const Vector3fposition)
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + +
    positionPosition of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setRelativeToListener()

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setRelativeToListener (bool relative)
    +
    + +

    Make the sound's position relative to the listener or absolute.

    +

    Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

    +
    Parameters
    + + +
    relativeTrue to set the position relative, false to set it absolute
    +
    +
    +
    See also
    isRelativeToListener
    + +
    +
    + +

    ◆ setVolume()

    + +
    +
    + + + + + + + + +
    void sf::SoundSource::setVolume (float volume)
    +
    + +

    Set the volume of the sound.

    +

    The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

    +
    Parameters
    + + +
    volumeVolume of the sound
    +
    +
    +
    See also
    getVolume
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::SoundSource::stop ()
    +
    +pure virtual
    +
    + +

    Stop playing the sound source.

    +

    This function stops the source if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

    +
    See also
    play, pause
    + +

    Implemented in sf::Sound, and sf::SoundStream.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_source

    + +
    +
    + + + + + +
    + + + + +
    unsigned int sf::SoundSource::m_source
    +
    +protected
    +
    + +

    OpenAL source identifier.

    + +

    Definition at line 309 of file SoundSource.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundSource.png b/SFML/doc/html/classsf_1_1SoundSource.png new file mode 100644 index 0000000000000000000000000000000000000000..b29de1436b35a3b98451b6889d33713dd0ae8d46 GIT binary patch literal 1194 zcmeAS@N?(olHy`uVBq!ia0vp^cYyc+2Q!e2nD93kNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?!gSbDlRhEy=Vo%?p$W-T5!bN_o!|Hgk> z`IWg~OYqddhbhx`yZTPdb$X_M!0^l&J;n!FK9lqgJZ12DR5YnXXgagT$*vfVlNG;s z{?1pCeWF;j(n;c6)y}87p0^JEEvn7i#Ip88@Au{Bzb~En<9F)3{OQs%$Cf@@eNN^1 zj?@?Dz56GfzCPttZ?#_O-3tDf`to7ZX2zIw-IUbV^_gCD`rqf4HY0V_{Hc|ZX$x=9 zoGjAM{&wg2BJJwDixG0M(^jVGZNH}bd-Ba^EAIwP`o{%yOy_COOP(=&3sm&fJ=F^> z8z#+|8O!9r`-eGW>a?f-{$}4;m%4L$^zJg>(~KrP&v_TP*%ULFKAOqALh!tdLvO`1 zhO8sT>;cO2EE}Xgo?*Pwk!vx^H{ChCHg@;2r+cEAt^mDpr2~QQcw8^NdzB&P5HDwe zWy9qiG7gq8d=E^3e&z%Exfkf?!%rFf9v3k@1xbe}r>AY3e(p?;e!0yhm6uFGmY%y9 zrcYjSdB+@;sgLXR#hql1ZdB3zSyCLGcmGfFnd3X&KYe8K{^IgT{*!NK*LPX!U*Es@ zN$RrvimLvxX7B8{)A&=|(DRyzNWX1$-s^{zSLN>)-#@=!Z94l~z0;M4m#@`)8UOg3UCcD= zXY)@N2=&^}JhWfe+f(cCH~T`*U&1kdlYl;-6v7Ad;o?$DL}dFfixNycx%^?iesYk<)aIqWB?`h??_^ zlfH2CPwn=W*G-S~{59?Q$*)q1yHtw)zVMZ)39FlPN5N3Pirmz + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::SoundStream Member List
    +
    +
    + +

    This is the complete list of members for sf::SoundStream, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getAttenuation() constsf::SoundSource
    getChannelCount() constsf::SoundStream
    getLoop() constsf::SoundStream
    getMinDistance() constsf::SoundSource
    getPitch() constsf::SoundSource
    getPlayingOffset() constsf::SoundStream
    getPosition() constsf::SoundSource
    getSampleRate() constsf::SoundStream
    getStatus() constsf::SoundStreamvirtual
    getVolume() constsf::SoundSource
    initialize(unsigned int channelCount, unsigned int sampleRate)sf::SoundStreamprotected
    isRelativeToListener() constsf::SoundSource
    m_sourcesf::SoundSourceprotected
    NoLoop enum valuesf::SoundStreamprotected
    onGetData(Chunk &data)=0sf::SoundStreamprotectedpure virtual
    onLoop()sf::SoundStreamprotectedvirtual
    onSeek(Time timeOffset)=0sf::SoundStreamprotectedpure virtual
    operator=(const SoundSource &right)sf::SoundSource
    pause()sf::SoundStreamvirtual
    Paused enum valuesf::SoundSource
    play()sf::SoundStreamvirtual
    Playing enum valuesf::SoundSource
    setAttenuation(float attenuation)sf::SoundSource
    setLoop(bool loop)sf::SoundStream
    setMinDistance(float distance)sf::SoundSource
    setPitch(float pitch)sf::SoundSource
    setPlayingOffset(Time timeOffset)sf::SoundStream
    setPosition(float x, float y, float z)sf::SoundSource
    setPosition(const Vector3f &position)sf::SoundSource
    setRelativeToListener(bool relative)sf::SoundSource
    setVolume(float volume)sf::SoundSource
    SoundSource(const SoundSource &copy)sf::SoundSource
    SoundSource()sf::SoundSourceprotected
    SoundStream()sf::SoundStreamprotected
    Status enum namesf::SoundSource
    stop()sf::SoundStreamvirtual
    Stopped enum valuesf::SoundSource
    ~SoundSource()sf::SoundSourcevirtual
    ~SoundStream()sf::SoundStreamvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundStream.html b/SFML/doc/html/classsf_1_1SoundStream.html new file mode 100644 index 0000000..6a30687 --- /dev/null +++ b/SFML/doc/html/classsf_1_1SoundStream.html @@ -0,0 +1,1227 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Abstract base class for streamed audio sources. + More...

    + +

    #include <SoundStream.hpp>

    +
    +Inheritance diagram for sf::SoundStream:
    +
    +
    + + +sf::SoundSource +sf::AlResource +sf::Music + +
    + + + + + +

    +Classes

    struct  Chunk
     Structure defining a chunk of audio data to stream. More...
     
    + + + + +

    +Public Types

    enum  Status { Stopped, +Paused, +Playing + }
     Enumeration of the sound source states. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual ~SoundStream ()
     Destructor. More...
     
    void play ()
     Start or resume playing the audio stream. More...
     
    void pause ()
     Pause the audio stream. More...
     
    void stop ()
     Stop playing the audio stream. More...
     
    unsigned int getChannelCount () const
     Return the number of channels of the stream. More...
     
    unsigned int getSampleRate () const
     Get the stream sample rate of the stream. More...
     
    Status getStatus () const
     Get the current status of the stream (stopped, paused, playing) More...
     
    void setPlayingOffset (Time timeOffset)
     Change the current playing position of the stream. More...
     
    Time getPlayingOffset () const
     Get the current playing position of the stream. More...
     
    void setLoop (bool loop)
     Set whether or not the stream should loop after reaching the end. More...
     
    bool getLoop () const
     Tell whether or not the stream is in loop mode. More...
     
    void setPitch (float pitch)
     Set the pitch of the sound. More...
     
    void setVolume (float volume)
     Set the volume of the sound. More...
     
    void setPosition (float x, float y, float z)
     Set the 3D position of the sound in the audio scene. More...
     
    void setPosition (const Vector3f &position)
     Set the 3D position of the sound in the audio scene. More...
     
    void setRelativeToListener (bool relative)
     Make the sound's position relative to the listener or absolute. More...
     
    void setMinDistance (float distance)
     Set the minimum distance of the sound. More...
     
    void setAttenuation (float attenuation)
     Set the attenuation factor of the sound. More...
     
    float getPitch () const
     Get the pitch of the sound. More...
     
    float getVolume () const
     Get the volume of the sound. More...
     
    Vector3f getPosition () const
     Get the 3D position of the sound in the audio scene. More...
     
    bool isRelativeToListener () const
     Tell whether the sound's position is relative to the listener or is absolute. More...
     
    float getMinDistance () const
     Get the minimum distance of the sound. More...
     
    float getAttenuation () const
     Get the attenuation factor of the sound. More...
     
    + + + +

    +Protected Types

    enum  { NoLoop = -1 + }
     
    + + + + + + + + + + + + + + + + +

    +Protected Member Functions

     SoundStream ()
     Default constructor. More...
     
    void initialize (unsigned int channelCount, unsigned int sampleRate)
     Define the audio stream parameters. More...
     
    virtual bool onGetData (Chunk &data)=0
     Request a new chunk of audio samples from the stream source. More...
     
    virtual void onSeek (Time timeOffset)=0
     Change the current playing position in the stream source. More...
     
    virtual Int64 onLoop ()
     Change the current playing position in the stream source to the beginning of the loop. More...
     
    + + + + +

    +Protected Attributes

    unsigned int m_source
     OpenAL source identifier. More...
     
    +

    Detailed Description

    +

    Abstract base class for streamed audio sources.

    +

    Unlike audio buffers (see sf::SoundBuffer), audio streams are never completely loaded in memory.

    +

    Instead, the audio data is acquired continuously while the stream is playing. This behavior allows to play a sound with no loading delay, and keeps the memory consumption very low.

    +

    Sound sources that need to be streamed are usually big files (compressed audio musics that would eat hundreds of MB in memory) or files that would take a lot of time to be received (sounds played over the network).

    +

    sf::SoundStream is a base class that doesn't care about the stream source, which is left to the derived class. SFML provides a built-in specialization for big files (see sf::Music). No network stream source is provided, but you can write your own by combining this class with the network module.

    +

    A derived class has to override two virtual functions:

      +
    • onGetData fills a new chunk of audio data to be played
    • +
    • onSeek changes the current playing position in the source
    • +
    +

    It is important to note that each SoundStream is played in its own separate thread, so that the streaming loop doesn't block the rest of the program. In particular, the OnGetData and OnSeek virtual functions may sometimes be called from this separate thread. It is important to keep this in mind, because you may have to take care of synchronization issues if you share data between threads.

    +

    Usage example:

    class CustomStream : public sf::SoundStream
    {
    public:
    bool open(const std::string& location)
    {
    // Open the source and get audio settings
    ...
    unsigned int channelCount = ...;
    unsigned int sampleRate = ...;
    // Initialize the stream -- important!
    initialize(channelCount, sampleRate);
    }
    private:
    virtual bool onGetData(Chunk& data)
    {
    // Fill the chunk with audio data from the stream source
    // (note: must not be empty if you want to continue playing)
    data.samples = ...;
    data.sampleCount = ...;
    // Return true to continue playing
    return true;
    }
    virtual void onSeek(Uint32 timeOffset)
    {
    // Change the current position in the stream source
    ...
    }
    }
    // Usage
    CustomStream stream;
    stream.open("path/to/stream");
    stream.play();
    See also
    sf::Music
    + +

    Definition at line 45 of file SoundStream.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + + +
    + + + + +
    anonymous enum
    +
    +protected
    +
    + + +
    Enumerator
    NoLoop 

    "Invalid" endSeeks value, telling us to continue uninterrupted

    +
    + +

    Definition at line 183 of file SoundStream.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::SoundSource::Status
    +
    +inherited
    +
    + +

    Enumeration of the sound source states.

    + + + + +
    Enumerator
    Stopped 

    Sound is not playing.

    +
    Paused 

    Sound is paused.

    +
    Playing 

    Sound is playing.

    +
    + +

    Definition at line 50 of file SoundSource.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ ~SoundStream()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::SoundStream::~SoundStream ()
    +
    +virtual
    +
    + +

    Destructor.

    + +
    +
    + +

    ◆ SoundStream()

    + +
    +
    + + + + + +
    + + + + + + + +
    sf::SoundStream::SoundStream ()
    +
    +protected
    +
    + +

    Default constructor.

    +

    This constructor is only meant to be called by derived classes.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getAttenuation () const
    +
    +inherited
    +
    + +

    Get the attenuation factor of the sound.

    +
    Returns
    Attenuation factor of the sound
    +
    See also
    setAttenuation, getMinDistance
    + +
    +
    + +

    ◆ getChannelCount()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundStream::getChannelCount () const
    +
    + +

    Return the number of channels of the stream.

    +

    1 channel means a mono sound, 2 means stereo, etc.

    +
    Returns
    Number of channels
    + +
    +
    + +

    ◆ getLoop()

    + +
    +
    + + + + + + + +
    bool sf::SoundStream::getLoop () const
    +
    + +

    Tell whether or not the stream is in loop mode.

    +
    Returns
    True if the stream is looping, false otherwise
    +
    See also
    setLoop
    + +
    +
    + +

    ◆ getMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getMinDistance () const
    +
    +inherited
    +
    + +

    Get the minimum distance of the sound.

    +
    Returns
    Minimum distance of the sound
    +
    See also
    setMinDistance, getAttenuation
    + +
    +
    + +

    ◆ getPitch()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getPitch () const
    +
    +inherited
    +
    + +

    Get the pitch of the sound.

    +
    Returns
    Pitch of the sound
    +
    See also
    setPitch
    + +
    +
    + +

    ◆ getPlayingOffset()

    + +
    +
    + + + + + + + +
    Time sf::SoundStream::getPlayingOffset () const
    +
    + +

    Get the current playing position of the stream.

    +
    Returns
    Current playing position, from the beginning of the stream
    +
    See also
    setPlayingOffset
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    Vector3f sf::SoundSource::getPosition () const
    +
    +inherited
    +
    + +

    Get the 3D position of the sound in the audio scene.

    +
    Returns
    Position of the sound
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getSampleRate()

    + +
    +
    + + + + + + + +
    unsigned int sf::SoundStream::getSampleRate () const
    +
    + +

    Get the stream sample rate of the stream.

    +

    The sample rate is the number of audio samples played per second. The higher, the better the quality.

    +
    Returns
    Sample rate, in number of samples per second
    + +
    +
    + +

    ◆ getStatus()

    + +
    +
    + + + + + +
    + + + + + + + +
    Status sf::SoundStream::getStatus () const
    +
    +virtual
    +
    + +

    Get the current status of the stream (stopped, paused, playing)

    +
    Returns
    Current status
    + +

    Reimplemented from sf::SoundSource.

    + +
    +
    + +

    ◆ getVolume()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::SoundSource::getVolume () const
    +
    +inherited
    +
    + +

    Get the volume of the sound.

    +
    Returns
    Volume of the sound, in the range [0, 100]
    +
    See also
    setVolume
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::SoundStream::initialize (unsigned int channelCount,
    unsigned int sampleRate 
    )
    +
    +protected
    +
    + +

    Define the audio stream parameters.

    +

    This function must be called by derived classes as soon as they know the audio settings of the stream to play. Any attempt to manipulate the stream (play(), ...) before calling this function will fail. It can be called multiple times if the settings of the audio stream change, but only when the stream is stopped.

    +
    Parameters
    + + + +
    channelCountNumber of channels of the stream
    sampleRateSample rate, in samples per second
    +
    +
    + +
    +
    + +

    ◆ isRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::SoundSource::isRelativeToListener () const
    +
    +inherited
    +
    + +

    Tell whether the sound's position is relative to the listener or is absolute.

    +
    Returns
    True if the position is relative, false if it's absolute
    +
    See also
    setRelativeToListener
    + +
    +
    + +

    ◆ onGetData()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual bool sf::SoundStream::onGetData (Chunkdata)
    +
    +protectedpure virtual
    +
    + +

    Request a new chunk of audio samples from the stream source.

    +

    This function must be overridden by derived classes to provide the audio samples to play. It is called continuously by the streaming loop, in a separate thread. The source can choose to stop the streaming loop at any time, by returning false to the caller. If you return true (i.e. continue streaming) it is important that the returned array of samples is not empty; this would stop the stream due to an internal limitation.

    +
    Parameters
    + + +
    dataChunk of data to fill
    +
    +
    +
    Returns
    True to continue playback, false to stop
    + +

    Implemented in sf::Music.

    + +
    +
    + +

    ◆ onLoop()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual Int64 sf::SoundStream::onLoop ()
    +
    +protectedvirtual
    +
    + +

    Change the current playing position in the stream source to the beginning of the loop.

    +

    This function can be overridden by derived classes to allow implementation of custom loop points. Otherwise, it just calls onSeek(Time::Zero) and returns 0.

    +
    Returns
    The seek position after looping (or -1 if there's no loop)
    + +

    Reimplemented in sf::Music.

    + +
    +
    + +

    ◆ onSeek()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void sf::SoundStream::onSeek (Time timeOffset)
    +
    +protectedpure virtual
    +
    + +

    Change the current playing position in the stream source.

    +

    This function must be overridden by derived classes to allow random seeking into the stream source.

    +
    Parameters
    + + +
    timeOffsetNew playing position, relative to the beginning of the stream
    +
    +
    + +

    Implemented in sf::Music.

    + +
    +
    + +

    ◆ pause()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::pause ()
    +
    +virtual
    +
    + +

    Pause the audio stream.

    +

    This function pauses the stream if it was playing, otherwise (stream already paused or stopped) it has no effect.

    +
    See also
    play, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ play()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::play ()
    +
    +virtual
    +
    + +

    Start or resume playing the audio stream.

    +

    This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing. This function uses its own thread so that it doesn't block the rest of the program while the stream is played.

    +
    See also
    pause, stop
    + +

    Implements sf::SoundSource.

    + +
    +
    + +

    ◆ setAttenuation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setAttenuation (float attenuation)
    +
    +inherited
    +
    + +

    Set the attenuation factor of the sound.

    +

    The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

    +
    Parameters
    + + +
    attenuationNew attenuation factor of the sound
    +
    +
    +
    See also
    getAttenuation, setMinDistance
    + +
    +
    + +

    ◆ setLoop()

    + +
    +
    + + + + + + + + +
    void sf::SoundStream::setLoop (bool loop)
    +
    + +

    Set whether or not the stream should loop after reaching the end.

    +

    If set, the stream will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for streams is false.

    +
    Parameters
    + + +
    loopTrue to play in loop, false to play once
    +
    +
    +
    See also
    getLoop
    + +
    +
    + +

    ◆ setMinDistance()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setMinDistance (float distance)
    +
    +inherited
    +
    + +

    Set the minimum distance of the sound.

    +

    The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

    +
    Parameters
    + + +
    distanceNew minimum distance of the sound
    +
    +
    +
    See also
    getMinDistance, setAttenuation
    + +
    +
    + +

    ◆ setPitch()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPitch (float pitch)
    +
    +inherited
    +
    + +

    Set the pitch of the sound.

    +

    The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

    +
    Parameters
    + + +
    pitchNew pitch to apply to the sound
    +
    +
    +
    See also
    getPitch
    + +
    +
    + +

    ◆ setPlayingOffset()

    + +
    +
    + + + + + + + + +
    void sf::SoundStream::setPlayingOffset (Time timeOffset)
    +
    + +

    Change the current playing position of the stream.

    +

    The playing position can be changed when the stream is either paused or playing. Changing the playing position when the stream is stopped has no effect, since playing the stream would reset its position.

    +
    Parameters
    + + +
    timeOffsetNew playing position, from the beginning of the stream
    +
    +
    +
    See also
    getPlayingOffset
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::SoundSource::setPosition (float x,
    float y,
    float z 
    )
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + + + +
    xX coordinate of the position of the sound in the scene
    yY coordinate of the position of the sound in the scene
    zZ coordinate of the position of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setPosition (const Vector3fposition)
    +
    +inherited
    +
    + +

    Set the 3D position of the sound in the audio scene.

    +

    Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

    +
    Parameters
    + + +
    positionPosition of the sound in the scene
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setRelativeToListener()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setRelativeToListener (bool relative)
    +
    +inherited
    +
    + +

    Make the sound's position relative to the listener or absolute.

    +

    Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

    +
    Parameters
    + + +
    relativeTrue to set the position relative, false to set it absolute
    +
    +
    +
    See also
    isRelativeToListener
    + +
    +
    + +

    ◆ setVolume()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::SoundSource::setVolume (float volume)
    +
    +inherited
    +
    + +

    Set the volume of the sound.

    +

    The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

    +
    Parameters
    + + +
    volumeVolume of the sound
    +
    +
    +
    See also
    getVolume
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::SoundStream::stop ()
    +
    +virtual
    +
    + +

    Stop playing the audio stream.

    +

    This function stops the stream if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

    +
    See also
    play, pause
    + +

    Implements sf::SoundSource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_source

    + +
    +
    + + + + + +
    + + + + +
    unsigned int sf::SoundSource::m_source
    +
    +protectedinherited
    +
    + +

    OpenAL source identifier.

    + +

    Definition at line 309 of file SoundSource.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1SoundStream.png b/SFML/doc/html/classsf_1_1SoundStream.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8bc2474c4170e50b28ccb5fa903c1edf9c39d8 GIT binary patch literal 926 zcmV;P17ZA$P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0009mNklEPY_wpC8}rRH44#SD-a*3HSHf6pgXO^`Vbb z=cYEmn)Y+D;*&+$H?OMKm}>gE?tQA$_NKmp9y+2dw{5((dQIs0o+Q=l?3}JmgLCRS zCDuY|G0aM zv9{~#m5yk-r*_+Z=%+FJ0#18RlD?HNNzyD~lB8K&O*!Z60l?eb098~vH6XuFIT&n!A}=srb*OmRK17(cxq~HxBogvqnw($v$dyv_0yP4 zSDu^N`H`tTiQ}#}wL#a_D;;4Q$#mO({`T*wSnDfC_^^5a-$s}KW(gC(EUu=MQt|-c zZEgTAxS4J@FO{3=E^<=&nSN#Og$ZDqFagXGCV*MO1TagO0A>jjz${?`m?ccdC+D2s z<(6~K??RR&2f`#tvwWB-rDM?jmHjQ#KyFYR_fr|e{I?_ z?zz@$8+ViDUXsQiw;$OENIo>PgZmubxw_ra7P_+3Ro4 z$#hm*vhC47>^({PSA + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Sprite Member List
    +
    +
    + +

    This is the complete list of members for sf::Sprite, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    getColor() constsf::Sprite
    getGlobalBounds() constsf::Sprite
    getInverseTransform() constsf::Transformable
    getLocalBounds() constsf::Sprite
    getOrigin() constsf::Transformable
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getTexture() constsf::Sprite
    getTextureRect() constsf::Sprite
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setColor(const Color &color)sf::Sprite
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setTexture(const Texture &texture, bool resetRect=false)sf::Sprite
    setTextureRect(const IntRect &rectangle)sf::Sprite
    Sprite()sf::Sprite
    Sprite(const Texture &texture)sf::Spriteexplicit
    Sprite(const Texture &texture, const IntRect &rectangle)sf::Sprite
    Transformable()sf::Transformable
    ~Drawable()sf::Drawableinlinevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sprite.html b/SFML/doc/html/classsf_1_1Sprite.html new file mode 100644 index 0000000..2d36b48 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Sprite.html @@ -0,0 +1,1133 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Sprite Class Reference
    +
    +
    + +

    Drawable representation of a texture, with its own transformations, color, etc. + More...

    + +

    #include <Sprite.hpp>

    +
    +Inheritance diagram for sf::Sprite:
    +
    +
    + + +sf::Drawable +sf::Transformable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Sprite ()
     Default constructor. More...
     
     Sprite (const Texture &texture)
     Construct the sprite from a source texture. More...
     
     Sprite (const Texture &texture, const IntRect &rectangle)
     Construct the sprite from a sub-rectangle of a source texture. More...
     
    void setTexture (const Texture &texture, bool resetRect=false)
     Change the source texture of the sprite. More...
     
    void setTextureRect (const IntRect &rectangle)
     Set the sub-rectangle of the texture that the sprite will display. More...
     
    void setColor (const Color &color)
     Set the global color of the sprite. More...
     
    const TexturegetTexture () const
     Get the source texture of the sprite. More...
     
    const IntRectgetTextureRect () const
     Get the sub-rectangle of the texture displayed by the sprite. More...
     
    const ColorgetColor () const
     Get the global color of the sprite. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    +

    Detailed Description

    +

    Drawable representation of a texture, with its own transformations, color, etc.

    +

    sf::Sprite is a drawable class that allows to easily display a texture (or a part of it) on a render target.

    +

    It inherits all the functions from sf::Transformable: position, rotation, scale, origin. It also adds sprite-specific properties such as the texture to use, the part of it to display, and some convenience functions to change the overall color of the sprite, or to get its bounding rectangle.

    +

    sf::Sprite works in combination with the sf::Texture class, which loads and provides the pixel data of a given texture.

    +

    The separation of sf::Sprite and sf::Texture allows more flexibility and better performances: indeed a sf::Texture is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Sprite is a lightweight object which can use the pixel data of a sf::Texture and draw it with its own transformation/color/blending attributes.

    +

    It is important to note that the sf::Sprite instance doesn't copy the texture that it uses, it only keeps a reference to it. Thus, a sf::Texture must not be destroyed while it is used by a sf::Sprite (i.e. never write a function that uses a local sf::Texture instance for creating a sprite).

    +

    See also the note on coordinates and undistorted rendering in sf::Transformable.

    +

    Usage example:

    // Declare and load a texture
    sf::Texture texture;
    texture.loadFromFile("texture.png");
    // Create a sprite
    sf::Sprite sprite;
    sprite.setTexture(texture);
    sprite.setTextureRect(sf::IntRect(10, 10, 50, 30));
    sprite.setColor(sf::Color(255, 255, 255, 200));
    sprite.setPosition(100, 25);
    // Draw it
    window.draw(sprite);
    See also
    sf::Texture, sf::Transformable
    + +

    Definition at line 47 of file Sprite.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Sprite() [1/3]

    + +
    +
    + + + + + + + +
    sf::Sprite::Sprite ()
    +
    + +

    Default constructor.

    +

    Creates an empty sprite with no source texture.

    + +
    +
    + +

    ◆ Sprite() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::Sprite::Sprite (const Texturetexture)
    +
    +explicit
    +
    + +

    Construct the sprite from a source texture.

    +
    Parameters
    + + +
    textureSource texture
    +
    +
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ Sprite() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::Sprite::Sprite (const Texturetexture,
    const IntRectrectangle 
    )
    +
    + +

    Construct the sprite from a sub-rectangle of a source texture.

    +
    Parameters
    + + + +
    textureSource texture
    rectangleSub-rectangle of the texture to assign to the sprite
    +
    +
    +
    See also
    setTexture, setTextureRect
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Sprite::getColor () const
    +
    + +

    Get the global color of the sprite.

    +
    Returns
    Global color of the sprite
    +
    See also
    setColor
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Sprite::getGlobalBounds () const
    +
    + +

    Get the global bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the sprite in the global 2D world's coordinate system.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Sprite::getLocalBounds () const
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getTexture()

    + +
    +
    + + + + + + + +
    const Texture* sf::Sprite::getTexture () const
    +
    + +

    Get the source texture of the sprite.

    +

    If the sprite has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

    +
    Returns
    Pointer to the sprite's texture
    +
    See also
    setTexture
    + +
    +
    + +

    ◆ getTextureRect()

    + +
    +
    + + + + + + + +
    const IntRect& sf::Sprite::getTextureRect () const
    +
    + +

    Get the sub-rectangle of the texture displayed by the sprite.

    +
    Returns
    Texture rectangle of the sprite
    +
    See also
    setTextureRect
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setColor()

    + +
    +
    + + + + + + + + +
    void sf::Sprite::setColor (const Colorcolor)
    +
    + +

    Set the global color of the sprite.

    +

    This color is modulated (multiplied) with the sprite's texture. It can be used to colorize the sprite, or change its global opacity. By default, the sprite's color is opaque white.

    +
    Parameters
    + + +
    colorNew color of the sprite
    +
    +
    +
    See also
    getColor
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setTexture()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Sprite::setTexture (const Texturetexture,
    bool resetRect = false 
    )
    +
    + +

    Change the source texture of the sprite.

    +

    The texture argument refers to a texture that must exist as long as the sprite uses it. Indeed, the sprite doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the sprite tries to use it, the behavior is undefined. If resetRect is true, the TextureRect property of the sprite is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

    +
    Parameters
    + + + +
    textureNew texture
    resetRectShould the texture rect be reset to the size of the new texture?
    +
    +
    +
    See also
    getTexture, setTextureRect
    + +
    +
    + +

    ◆ setTextureRect()

    + +
    +
    + + + + + + + + +
    void sf::Sprite::setTextureRect (const IntRectrectangle)
    +
    + +

    Set the sub-rectangle of the texture that the sprite will display.

    +

    The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

    +
    Parameters
    + + +
    rectangleRectangle defining the region of the texture to display
    +
    +
    +
    See also
    getTextureRect, setTexture
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Sprite.png b/SFML/doc/html/classsf_1_1Sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..c4407dabfd1239e3561a6de662796cee0d71aea4 GIT binary patch literal 734 zcmV<40wMj0P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0007QNkl4t3oEZ zosW{6YB5oga`uvCrY%=;)=B9*5`LWD_26|AP04+^W_!=pid%d|vRbZrp5j91Jl@1X zxwa)kZ%Eck>o*ityc7q zmTOs2txY_7Cd=;XBsKWsGxlWo2yK7Od ztxX*LPfF6cwEib0sUs#SNvC3xlGF#2l%!KJNlEI%uSk0D{U{Pi@4X)dzza+O;~AUw z7bK_YEtX@`{(|H!**h%9ru_*?>#hL3FiC(@F-d?vm?Xfdm?S_SOcLN!enWDars)j; zd;?#zQGi!5Nq{S0k^oo0Bmu5~NdjB}lLWW|CJAr_OcLO;aL&150K9{diA@rq7bXdC zA|?sYi{}!@##m{Rx9?A`0`Lx=N*sfh(SFXCOV0N#xq0ir-EZ#gxQz2CfC`@~8A@>u zS`T5uVik`u2B5_UOO`>4X2Ew$Mx}kHDI_Z`2}s``+<3C)xi+5qodh`G^PkB=G8er{ zxo(~2erD~i(fMn;D?p8xrkNx_FH92PL`)K(7bXdCA|?sY3+J302EeQQ155iaUNWR) Q4gdfE07*qoM6N<$f+L+zr2qf` literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1String-members.html b/SFML/doc/html/classsf_1_1String-members.html new file mode 100644 index 0000000..1972de8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1String-members.html @@ -0,0 +1,112 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::String Member List
    +
    +
    + +

    This is the complete list of members for sf::String, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    begin()sf::String
    begin() constsf::String
    clear()sf::String
    ConstIterator typedefsf::String
    end()sf::String
    end() constsf::String
    erase(std::size_t position, std::size_t count=1)sf::String
    find(const String &str, std::size_t start=0) constsf::String
    fromUtf16(T begin, T end)sf::Stringstatic
    fromUtf32(T begin, T end)sf::Stringstatic
    fromUtf8(T begin, T end)sf::Stringstatic
    getData() constsf::String
    getSize() constsf::String
    insert(std::size_t position, const String &str)sf::String
    InvalidPossf::Stringstatic
    isEmpty() constsf::String
    Iterator typedefsf::String
    operator std::string() constsf::String
    operator std::wstring() constsf::String
    operator!=(const String &left, const String &right)sf::Stringrelated
    operator+(const String &left, const String &right)sf::Stringrelated
    operator+=(const String &right)sf::String
    operator< (defined in sf::String)sf::Stringfriend
    operator<(const String &left, const String &right)sf::Stringrelated
    operator<=(const String &left, const String &right)sf::Stringrelated
    operator=(const String &right)sf::String
    operator== (defined in sf::String)sf::Stringfriend
    operator==(const String &left, const String &right)sf::Stringrelated
    operator>(const String &left, const String &right)sf::Stringrelated
    operator>=(const String &left, const String &right)sf::Stringrelated
    operator[](std::size_t index) constsf::String
    operator[](std::size_t index)sf::String
    replace(std::size_t position, std::size_t length, const String &replaceWith)sf::String
    replace(const String &searchFor, const String &replaceWith)sf::String
    String()sf::String
    String(char ansiChar, const std::locale &locale=std::locale())sf::String
    String(wchar_t wideChar)sf::String
    String(Uint32 utf32Char)sf::String
    String(const char *ansiString, const std::locale &locale=std::locale())sf::String
    String(const std::string &ansiString, const std::locale &locale=std::locale())sf::String
    String(const wchar_t *wideString)sf::String
    String(const std::wstring &wideString)sf::String
    String(const Uint32 *utf32String)sf::String
    String(const std::basic_string< Uint32 > &utf32String)sf::String
    String(const String &copy)sf::String
    substring(std::size_t position, std::size_t length=InvalidPos) constsf::String
    toAnsiString(const std::locale &locale=std::locale()) constsf::String
    toUtf16() constsf::String
    toUtf32() constsf::String
    toUtf8() constsf::String
    toWideString() constsf::String
    + + + + diff --git a/SFML/doc/html/classsf_1_1String.html b/SFML/doc/html/classsf_1_1String.html new file mode 100644 index 0000000..56ce262 --- /dev/null +++ b/SFML/doc/html/classsf_1_1String.html @@ -0,0 +1,1789 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Utility string class that automatically handles conversions between types and encodings. + More...

    + +

    #include <String.hpp>

    + + + + + + + + +

    +Public Types

    typedef std::basic_string< Uint32 >::iterator Iterator
     Iterator type. More...
     
    typedef std::basic_string< Uint32 >::const_iterator ConstIterator
     Read-only iterator type. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     String ()
     Default constructor. More...
     
     String (char ansiChar, const std::locale &locale=std::locale())
     Construct from a single ANSI character and a locale. More...
     
     String (wchar_t wideChar)
     Construct from single wide character. More...
     
     String (Uint32 utf32Char)
     Construct from single UTF-32 character. More...
     
     String (const char *ansiString, const std::locale &locale=std::locale())
     Construct from a null-terminated C-style ANSI string and a locale. More...
     
     String (const std::string &ansiString, const std::locale &locale=std::locale())
     Construct from an ANSI string and a locale. More...
     
     String (const wchar_t *wideString)
     Construct from null-terminated C-style wide string. More...
     
     String (const std::wstring &wideString)
     Construct from a wide string. More...
     
     String (const Uint32 *utf32String)
     Construct from a null-terminated C-style UTF-32 string. More...
     
     String (const std::basic_string< Uint32 > &utf32String)
     Construct from an UTF-32 string. More...
     
     String (const String &copy)
     Copy constructor. More...
     
     operator std::string () const
     Implicit conversion operator to std::string (ANSI string) More...
     
     operator std::wstring () const
     Implicit conversion operator to std::wstring (wide string) More...
     
    std::string toAnsiString (const std::locale &locale=std::locale()) const
     Convert the Unicode string to an ANSI string. More...
     
    std::wstring toWideString () const
     Convert the Unicode string to a wide string. More...
     
    std::basic_string< Uint8 > toUtf8 () const
     Convert the Unicode string to a UTF-8 string. More...
     
    std::basic_string< Uint16 > toUtf16 () const
     Convert the Unicode string to a UTF-16 string. More...
     
    std::basic_string< Uint32 > toUtf32 () const
     Convert the Unicode string to a UTF-32 string. More...
     
    Stringoperator= (const String &right)
     Overload of assignment operator. More...
     
    Stringoperator+= (const String &right)
     Overload of += operator to append an UTF-32 string. More...
     
    Uint32 operator[] (std::size_t index) const
     Overload of [] operator to access a character by its position. More...
     
    Uint32 & operator[] (std::size_t index)
     Overload of [] operator to access a character by its position. More...
     
    void clear ()
     Clear the string. More...
     
    std::size_t getSize () const
     Get the size of the string. More...
     
    bool isEmpty () const
     Check whether the string is empty or not. More...
     
    void erase (std::size_t position, std::size_t count=1)
     Erase one or more characters from the string. More...
     
    void insert (std::size_t position, const String &str)
     Insert one or more characters into the string. More...
     
    std::size_t find (const String &str, std::size_t start=0) const
     Find a sequence of one or more characters in the string. More...
     
    void replace (std::size_t position, std::size_t length, const String &replaceWith)
     Replace a substring with another string. More...
     
    void replace (const String &searchFor, const String &replaceWith)
     Replace all occurrences of a substring with a replacement string. More...
     
    String substring (std::size_t position, std::size_t length=InvalidPos) const
     Return a part of the string. More...
     
    const Uint32 * getData () const
     Get a pointer to the C-style array of characters. More...
     
    Iterator begin ()
     Return an iterator to the beginning of the string. More...
     
    ConstIterator begin () const
     Return an iterator to the beginning of the string. More...
     
    Iterator end ()
     Return an iterator to the end of the string. More...
     
    ConstIterator end () const
     Return an iterator to the end of the string. More...
     
    + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename T >
    static String fromUtf8 (T begin, T end)
     Create a new sf::String from a UTF-8 encoded string. More...
     
    template<typename T >
    static String fromUtf16 (T begin, T end)
     Create a new sf::String from a UTF-16 encoded string. More...
     
    template<typename T >
    static String fromUtf32 (T begin, T end)
     Create a new sf::String from a UTF-32 encoded string. More...
     
    + + + + +

    +Static Public Attributes

    static const std::size_t InvalidPos
     Represents an invalid position in the string. More...
     
    + + + + + +

    +Friends

    +bool operator== (const String &left, const String &right)
     
    +bool operator< (const String &left, const String &right)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    bool operator== (const String &left, const String &right)
     Overload of == operator to compare two UTF-32 strings. More...
     
    bool operator!= (const String &left, const String &right)
     Overload of != operator to compare two UTF-32 strings. More...
     
    bool operator< (const String &left, const String &right)
     Overload of < operator to compare two UTF-32 strings. More...
     
    bool operator> (const String &left, const String &right)
     Overload of > operator to compare two UTF-32 strings. More...
     
    bool operator<= (const String &left, const String &right)
     Overload of <= operator to compare two UTF-32 strings. More...
     
    bool operator>= (const String &left, const String &right)
     Overload of >= operator to compare two UTF-32 strings. More...
     
    String operator+ (const String &left, const String &right)
     Overload of binary + operator to concatenate two strings. More...
     
    +

    Detailed Description

    +

    Utility string class that automatically handles conversions between types and encodings.

    +

    sf::String is a utility string class defined mainly for convenience.

    +

    It is a Unicode string (implemented using UTF-32), thus it can store any character in the world (European, Chinese, Arabic, Hebrew, etc.).

    +

    It automatically handles conversions from/to ANSI and wide strings, so that you can work with standard string classes and still be compatible with functions taking a sf::String.

    +
    std::string s1 = s; // automatically converted to ANSI string
    std::wstring s2 = s; // automatically converted to wide string
    s = "hello"; // automatically converted from ANSI string
    s = L"hello"; // automatically converted from wide string
    s += 'a'; // automatically converted from ANSI string
    s += L'a'; // automatically converted from wide string

    Conversions involving ANSI strings use the default user locale. However it is possible to use a custom locale if necessary:

    std::locale locale;
    ...
    std::string s1 = s.toAnsiString(locale);
    s = sf::String("hello", locale);

    sf::String defines the most important functions of the standard std::string class: removing, random access, iterating, appending, comparing, etc. However it is a simple class provided for convenience, and you may have to consider using a more optimized class if your program requires complex string handling. The automatic conversion functions will then take care of converting your string to sf::String whenever SFML requires it.

    +

    Please note that SFML also defines a low-level, generic interface for Unicode handling, see the sf::Utf classes.

    + +

    Definition at line 45 of file String.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ ConstIterator

    + +
    +
    + + + + +
    typedef std::basic_string<Uint32>::const_iterator sf::String::ConstIterator
    +
    + +

    Read-only iterator type.

    + +

    Definition at line 53 of file String.hpp.

    + +
    +
    + +

    ◆ Iterator

    + +
    +
    + + + + +
    typedef std::basic_string<Uint32>::iterator sf::String::Iterator
    +
    + +

    Iterator type.

    + +

    Definition at line 52 of file String.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ String() [1/11]

    + +
    +
    + + + + + + + +
    sf::String::String ()
    +
    + +

    Default constructor.

    +

    This constructor creates an empty string.

    + +
    +
    + +

    ◆ String() [2/11]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::String::String (char ansiChar,
    const std::locale & locale = std::locale() 
    )
    +
    + +

    Construct from a single ANSI character and a locale.

    +

    The source character is converted to UTF-32 according to the given locale.

    +
    Parameters
    + + + +
    ansiCharANSI character to convert
    localeLocale to use for conversion
    +
    +
    + +
    +
    + +

    ◆ String() [3/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (wchar_t wideChar)
    +
    + +

    Construct from single wide character.

    +
    Parameters
    + + +
    wideCharWide character to convert
    +
    +
    + +
    +
    + +

    ◆ String() [4/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (Uint32 utf32Char)
    +
    + +

    Construct from single UTF-32 character.

    +
    Parameters
    + + +
    utf32CharUTF-32 character to convert
    +
    +
    + +
    +
    + +

    ◆ String() [5/11]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::String::String (const char * ansiString,
    const std::locale & locale = std::locale() 
    )
    +
    + +

    Construct from a null-terminated C-style ANSI string and a locale.

    +

    The source string is converted to UTF-32 according to the given locale.

    +
    Parameters
    + + + +
    ansiStringANSI string to convert
    localeLocale to use for conversion
    +
    +
    + +
    +
    + +

    ◆ String() [6/11]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::String::String (const std::string & ansiString,
    const std::locale & locale = std::locale() 
    )
    +
    + +

    Construct from an ANSI string and a locale.

    +

    The source string is converted to UTF-32 according to the given locale.

    +
    Parameters
    + + + +
    ansiStringANSI string to convert
    localeLocale to use for conversion
    +
    +
    + +
    +
    + +

    ◆ String() [7/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (const wchar_t * wideString)
    +
    + +

    Construct from null-terminated C-style wide string.

    +
    Parameters
    + + +
    wideStringWide string to convert
    +
    +
    + +
    +
    + +

    ◆ String() [8/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (const std::wstring & wideString)
    +
    + +

    Construct from a wide string.

    +
    Parameters
    + + +
    wideStringWide string to convert
    +
    +
    + +
    +
    + +

    ◆ String() [9/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (const Uint32 * utf32String)
    +
    + +

    Construct from a null-terminated C-style UTF-32 string.

    +
    Parameters
    + + +
    utf32StringUTF-32 string to assign
    +
    +
    + +
    +
    + +

    ◆ String() [10/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (const std::basic_string< Uint32 > & utf32String)
    +
    + +

    Construct from an UTF-32 string.

    +
    Parameters
    + + +
    utf32StringUTF-32 string to assign
    +
    +
    + +
    +
    + +

    ◆ String() [11/11]

    + +
    +
    + + + + + + + + +
    sf::String::String (const Stringcopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyInstance to copy
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ begin() [1/2]

    + +
    +
    + + + + + + + +
    Iterator sf::String::begin ()
    +
    + +

    Return an iterator to the beginning of the string.

    +
    Returns
    Read-write iterator to the beginning of the string characters
    +
    See also
    end
    + +
    +
    + +

    ◆ begin() [2/2]

    + +
    +
    + + + + + + + +
    ConstIterator sf::String::begin () const
    +
    + +

    Return an iterator to the beginning of the string.

    +
    Returns
    Read-only iterator to the beginning of the string characters
    +
    See also
    end
    + +
    +
    + +

    ◆ clear()

    + +
    +
    + + + + + + + +
    void sf::String::clear ()
    +
    + +

    Clear the string.

    +

    This function removes all the characters from the string.

    +
    See also
    isEmpty, erase
    + +
    +
    + +

    ◆ end() [1/2]

    + +
    +
    + + + + + + + +
    Iterator sf::String::end ()
    +
    + +

    Return an iterator to the end of the string.

    +

    The end iterator refers to 1 position past the last character; thus it represents an invalid character and should never be accessed.

    +
    Returns
    Read-write iterator to the end of the string characters
    +
    See also
    begin
    + +
    +
    + +

    ◆ end() [2/2]

    + +
    +
    + + + + + + + +
    ConstIterator sf::String::end () const
    +
    + +

    Return an iterator to the end of the string.

    +

    The end iterator refers to 1 position past the last character; thus it represents an invalid character and should never be accessed.

    +
    Returns
    Read-only iterator to the end of the string characters
    +
    See also
    begin
    + +
    +
    + +

    ◆ erase()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::String::erase (std::size_t position,
    std::size_t count = 1 
    )
    +
    + +

    Erase one or more characters from the string.

    +

    This function removes a sequence of count characters starting from position.

    +
    Parameters
    + + + +
    positionPosition of the first character to erase
    countNumber of characters to erase
    +
    +
    + +
    +
    + +

    ◆ find()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::size_t sf::String::find (const Stringstr,
    std::size_t start = 0 
    ) const
    +
    + +

    Find a sequence of one or more characters in the string.

    +

    This function searches for the characters of str in the string, starting from start.

    +
    Parameters
    + + + +
    strCharacters to find
    startWhere to begin searching
    +
    +
    +
    Returns
    Position of str in the string, or String::InvalidPos if not found
    + +
    +
    + +

    ◆ fromUtf16()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static String sf::String::fromUtf16 (begin,
    end 
    )
    +
    +static
    +
    + +

    Create a new sf::String from a UTF-16 encoded string.

    +
    Parameters
    + + + +
    beginForward iterator to the beginning of the UTF-16 sequence
    endForward iterator to the end of the UTF-16 sequence
    +
    +
    +
    Returns
    A sf::String containing the source string
    +
    See also
    fromUtf8, fromUtf32
    + +
    +
    + +

    ◆ fromUtf32()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static String sf::String::fromUtf32 (begin,
    end 
    )
    +
    +static
    +
    + +

    Create a new sf::String from a UTF-32 encoded string.

    +

    This function is provided for consistency, it is equivalent to using the constructors that takes a const sf::Uint32* or a std::basic_string<sf::Uint32>.

    +
    Parameters
    + + + +
    beginForward iterator to the beginning of the UTF-32 sequence
    endForward iterator to the end of the UTF-32 sequence
    +
    +
    +
    Returns
    A sf::String containing the source string
    +
    See also
    fromUtf8, fromUtf16
    + +
    +
    + +

    ◆ fromUtf8()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static String sf::String::fromUtf8 (begin,
    end 
    )
    +
    +static
    +
    + +

    Create a new sf::String from a UTF-8 encoded string.

    +
    Parameters
    + + + +
    beginForward iterator to the beginning of the UTF-8 sequence
    endForward iterator to the end of the UTF-8 sequence
    +
    +
    +
    Returns
    A sf::String containing the source string
    +
    See also
    fromUtf16, fromUtf32
    + +
    +
    + +

    ◆ getData()

    + +
    +
    + + + + + + + +
    const Uint32* sf::String::getData () const
    +
    + +

    Get a pointer to the C-style array of characters.

    +

    This functions provides a read-only access to a null-terminated C-style representation of the string. The returned pointer is temporary and is meant only for immediate use, thus it is not recommended to store it.

    +
    Returns
    Read-only pointer to the array of characters
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    std::size_t sf::String::getSize () const
    +
    + +

    Get the size of the string.

    +
    Returns
    Number of characters in the string
    +
    See also
    isEmpty
    + +
    +
    + +

    ◆ insert()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::String::insert (std::size_t position,
    const Stringstr 
    )
    +
    + +

    Insert one or more characters into the string.

    +

    This function inserts the characters of str into the string, starting from position.

    +
    Parameters
    + + + +
    positionPosition of insertion
    strCharacters to insert
    +
    +
    + +
    +
    + +

    ◆ isEmpty()

    + +
    +
    + + + + + + + +
    bool sf::String::isEmpty () const
    +
    + +

    Check whether the string is empty or not.

    +
    Returns
    True if the string is empty (i.e. contains no character)
    +
    See also
    clear, getSize
    + +
    +
    + +

    ◆ operator std::string()

    + +
    +
    + + + + + + + +
    sf::String::operator std::string () const
    +
    + +

    Implicit conversion operator to std::string (ANSI string)

    +

    The current global locale is used for conversion. If you want to explicitly specify a locale, see toAnsiString. Characters that do not fit in the target encoding are discarded from the returned string. This operator is defined for convenience, and is equivalent to calling toAnsiString().

    +
    Returns
    Converted ANSI string
    +
    See also
    toAnsiString, operator std::wstring
    + +
    +
    + +

    ◆ operator std::wstring()

    + +
    +
    + + + + + + + +
    sf::String::operator std::wstring () const
    +
    + +

    Implicit conversion operator to std::wstring (wide string)

    +

    Characters that do not fit in the target encoding are discarded from the returned string. This operator is defined for convenience, and is equivalent to calling toWideString().

    +
    Returns
    Converted wide string
    +
    See also
    toWideString, operator std::string
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    + + + + + + + + +
    String& sf::String::operator+= (const Stringright)
    +
    + +

    Overload of += operator to append an UTF-32 string.

    +
    Parameters
    + + +
    rightString to append
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    String& sf::String::operator= (const Stringright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ operator[]() [1/2]

    + +
    +
    + + + + + + + + +
    Uint32 sf::String::operator[] (std::size_t index) const
    +
    + +

    Overload of [] operator to access a character by its position.

    +

    This function provides read-only access to characters. Note: the behavior is undefined if index is out of range.

    +
    Parameters
    + + +
    indexIndex of the character to get
    +
    +
    +
    Returns
    Character at position index
    + +
    +
    + +

    ◆ operator[]() [2/2]

    + +
    +
    + + + + + + + + +
    Uint32& sf::String::operator[] (std::size_t index)
    +
    + +

    Overload of [] operator to access a character by its position.

    +

    This function provides read and write access to characters. Note: the behavior is undefined if index is out of range.

    +
    Parameters
    + + +
    indexIndex of the character to get
    +
    +
    +
    Returns
    Reference to the character at position index
    + +
    +
    + +

    ◆ replace() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::String::replace (std::size_t position,
    std::size_t length,
    const StringreplaceWith 
    )
    +
    + +

    Replace a substring with another string.

    +

    This function replaces the substring that starts at index position and spans length characters with the string replaceWith.

    +
    Parameters
    + + + + +
    positionIndex of the first character to be replaced
    lengthNumber of characters to replace. You can pass InvalidPos to replace all characters until the end of the string.
    replaceWithString that replaces the given substring.
    +
    +
    + +
    +
    + +

    ◆ replace() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::String::replace (const StringsearchFor,
    const StringreplaceWith 
    )
    +
    + +

    Replace all occurrences of a substring with a replacement string.

    +

    This function replaces all occurrences of searchFor in this string with the string replaceWith.

    +
    Parameters
    + + + +
    searchForThe value being searched for
    replaceWithThe value that replaces found searchFor values
    +
    +
    + +
    +
    + +

    ◆ substring()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    String sf::String::substring (std::size_t position,
    std::size_t length = InvalidPos 
    ) const
    +
    + +

    Return a part of the string.

    +

    This function returns the substring that starts at index position and spans length characters.

    +
    Parameters
    + + + +
    positionIndex of the first character
    lengthNumber of characters to include in the substring (if the string is shorter, as many characters as possible are included). InvalidPos can be used to include all characters until the end of the string.
    +
    +
    +
    Returns
    String object containing a substring of this object
    + +
    +
    + +

    ◆ toAnsiString()

    + +
    +
    + + + + + + + + +
    std::string sf::String::toAnsiString (const std::locale & locale = std::locale()) const
    +
    + +

    Convert the Unicode string to an ANSI string.

    +

    The UTF-32 string is converted to an ANSI string in the encoding defined by locale. Characters that do not fit in the target encoding are discarded from the returned string.

    +
    Parameters
    + + +
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Converted ANSI string
    +
    See also
    toWideString, operator std::string
    + +
    +
    + +

    ◆ toUtf16()

    + +
    +
    + + + + + + + +
    std::basic_string<Uint16> sf::String::toUtf16 () const
    +
    + +

    Convert the Unicode string to a UTF-16 string.

    +
    Returns
    Converted UTF-16 string
    +
    See also
    toUtf8, toUtf32
    + +
    +
    + +

    ◆ toUtf32()

    + +
    +
    + + + + + + + +
    std::basic_string<Uint32> sf::String::toUtf32 () const
    +
    + +

    Convert the Unicode string to a UTF-32 string.

    +

    This function doesn't perform any conversion, since the string is already stored as UTF-32 internally.

    +
    Returns
    Converted UTF-32 string
    +
    See also
    toUtf8, toUtf16
    + +
    +
    + +

    ◆ toUtf8()

    + +
    +
    + + + + + + + +
    std::basic_string<Uint8> sf::String::toUtf8 () const
    +
    + +

    Convert the Unicode string to a UTF-8 string.

    +
    Returns
    Converted UTF-8 string
    +
    See also
    toUtf16, toUtf32
    + +
    +
    + +

    ◆ toWideString()

    + +
    +
    + + + + + + + +
    std::wstring sf::String::toWideString () const
    +
    + +

    Convert the Unicode string to a wide string.

    +

    Characters that do not fit in the target encoding are discarded from the returned string.

    +
    Returns
    Converted wide string
    +
    See also
    toAnsiString, operator std::wstring
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of != operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if both strings are different
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    String operator+ (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of binary + operator to concatenate two strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    Concatenated string
    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator< (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of < operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if left is lexicographically before right
    + +
    +
    + +

    ◆ operator<=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator<= (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of <= operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if left is lexicographically before or equivalent to right
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of == operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if both strings are equal
    + +
    +
    + +

    ◆ operator>()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator> (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of > operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if left is lexicographically after right
    + +
    +
    + +

    ◆ operator>=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator>= (const Stringleft,
    const Stringright 
    )
    +
    +related
    +
    + +

    Overload of >= operator to compare two UTF-32 strings.

    +
    Parameters
    + + + +
    leftLeft operand (a string)
    rightRight operand (a string)
    +
    +
    +
    Returns
    True if left is lexicographically after or equivalent to right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ InvalidPos

    + +
    +
    + + + + + +
    + + + + +
    const std::size_t sf::String::InvalidPos
    +
    +static
    +
    + +

    Represents an invalid position in the string.

    + +

    Definition at line 58 of file String.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1TcpListener-members.html b/SFML/doc/html/classsf_1_1TcpListener-members.html new file mode 100644 index 0000000..4b7fad0 --- /dev/null +++ b/SFML/doc/html/classsf_1_1TcpListener-members.html @@ -0,0 +1,83 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::TcpListener Member List
    +
    +
    + +

    This is the complete list of members for sf::TcpListener, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + +
    accept(TcpSocket &socket)sf::TcpListener
    AnyPort enum valuesf::Socket
    close()sf::TcpListener
    create()sf::Socketprotected
    create(SocketHandle handle)sf::Socketprotected
    Disconnected enum valuesf::Socket
    Done enum valuesf::Socket
    Error enum valuesf::Socket
    getHandle() constsf::Socketprotected
    getLocalPort() constsf::TcpListener
    isBlocking() constsf::Socket
    listen(unsigned short port, const IpAddress &address=IpAddress::Any)sf::TcpListener
    NotReady enum valuesf::Socket
    Partial enum valuesf::Socket
    setBlocking(bool blocking)sf::Socket
    Socket(Type type)sf::Socketprotected
    Status enum namesf::Socket
    Tcp enum valuesf::Socketprotected
    TcpListener()sf::TcpListener
    Type enum namesf::Socketprotected
    Udp enum valuesf::Socketprotected
    ~Socket()sf::Socketvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1TcpListener.html b/SFML/doc/html/classsf_1_1TcpListener.html new file mode 100644 index 0000000..8dadc4e --- /dev/null +++ b/SFML/doc/html/classsf_1_1TcpListener.html @@ -0,0 +1,547 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Socket that listens to new TCP connections. + More...

    + +

    #include <TcpListener.hpp>

    +
    +Inheritance diagram for sf::TcpListener:
    +
    +
    + + +sf::Socket +sf::NonCopyable + +
    + + + + + + + + +

    +Public Types

    enum  Status {
    +  Done, +NotReady, +Partial, +Disconnected, +
    +  Error +
    + }
     Status codes that may be returned by socket functions. More...
     
    enum  { AnyPort = 0 + }
     Some special values used by sockets. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     TcpListener ()
     Default constructor. More...
     
    unsigned short getLocalPort () const
     Get the port to which the socket is bound locally. More...
     
    Status listen (unsigned short port, const IpAddress &address=IpAddress::Any)
     Start listening for incoming connection attempts. More...
     
    void close ()
     Stop listening and close the socket. More...
     
    Status accept (TcpSocket &socket)
     Accept a new connection. More...
     
    void setBlocking (bool blocking)
     Set the blocking state of the socket. More...
     
    bool isBlocking () const
     Tell whether the socket is in blocking or non-blocking mode. More...
     
    + + + + +

    +Protected Types

    enum  Type { Tcp, +Udp + }
     Types of protocols that the socket can use. More...
     
    + + + + + + + + + + +

    +Protected Member Functions

    SocketHandle getHandle () const
     Return the internal handle of the socket. More...
     
    void create ()
     Create the internal representation of the socket. More...
     
    void create (SocketHandle handle)
     Create the internal representation of the socket from a socket handle. More...
     
    +

    Detailed Description

    +

    Socket that listens to new TCP connections.

    +

    A listener socket is a special type of socket that listens to a given port and waits for connections on that port.

    +

    This is all it can do.

    +

    When a new connection is received, you must call accept and the listener returns a new instance of sf::TcpSocket that is properly initialized and can be used to communicate with the new client.

    +

    Listener sockets are specific to the TCP protocol, UDP sockets are connectionless and can therefore communicate directly. As a consequence, a listener socket will always return the new connections as sf::TcpSocket instances.

    +

    A listener is automatically closed on destruction, like all other types of socket. However if you want to stop listening before the socket is destroyed, you can call its close() function.

    +

    Usage example:

    // Create a listener socket and make it wait for new
    // connections on port 55001
    sf::TcpListener listener;
    listener.listen(55001);
    // Endless loop that waits for new connections
    while (running)
    {
    sf::TcpSocket client;
    if (listener.accept(client) == sf::Socket::Done)
    {
    // A new client just connected!
    std::cout << "New connection received from " << client.getRemoteAddress() << std::endl;
    doSomethingWith(client);
    }
    }
    See also
    sf::TcpSocket, sf::Socket
    + +

    Definition at line 44 of file TcpListener.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + + +
    + + + + +
    anonymous enum
    +
    +inherited
    +
    + +

    Some special values used by sockets.

    + + +
    Enumerator
    AnyPort 

    Special value that tells the system to pick any available port.

    +
    + +

    Definition at line 66 of file Socket.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Status
    +
    +inherited
    +
    + +

    Status codes that may be returned by socket functions.

    + + + + + + +
    Enumerator
    Done 

    The socket has sent / received the data.

    +
    NotReady 

    The socket is not ready to send / receive data yet.

    +
    Partial 

    The socket sent a part of the data.

    +
    Disconnected 

    The TCP socket has been disconnected.

    +
    Error 

    An unexpected error happened.

    +
    + +

    Definition at line 53 of file Socket.hpp.

    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Type
    +
    +protectedinherited
    +
    + +

    Types of protocols that the socket can use.

    + + + +
    Enumerator
    Tcp 

    TCP protocol.

    +
    Udp 

    UDP protocol.

    +
    + +

    Definition at line 114 of file Socket.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ TcpListener()

    + +
    +
    + + + + + + + +
    sf::TcpListener::TcpListener ()
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ accept()

    + +
    +
    + + + + + + + + +
    Status sf::TcpListener::accept (TcpSocketsocket)
    +
    + +

    Accept a new connection.

    +

    If the socket is in blocking mode, this function will not return until a connection is actually received.

    +
    Parameters
    + + +
    socketSocket that will hold the new connection
    +
    +
    +
    Returns
    Status code
    +
    See also
    listen
    + +
    +
    + +

    ◆ close()

    + +
    +
    + + + + + + + +
    void sf::TcpListener::close ()
    +
    + +

    Stop listening and close the socket.

    +

    This function gracefully stops the listener. If the socket is not listening, this function has no effect.

    +
    See also
    listen
    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::create ()
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::create (SocketHandle handle)
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket from a socket handle.

    +

    This function can only be accessed by derived classes.

    +
    Parameters
    + + +
    handleOS-specific handle of the socket to wrap
    +
    +
    + +
    +
    + +

    ◆ getHandle()

    + +
    +
    + + + + + +
    + + + + + + + +
    SocketHandle sf::Socket::getHandle () const
    +
    +protectedinherited
    +
    + +

    Return the internal handle of the socket.

    +

    The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

    +
    Returns
    The internal (OS-specific) handle of the socket
    + +
    +
    + +

    ◆ getLocalPort()

    + +
    +
    + + + + + + + +
    unsigned short sf::TcpListener::getLocalPort () const
    +
    + +

    Get the port to which the socket is bound locally.

    +

    If the socket is not listening to a port, this function returns 0.

    +
    Returns
    Port to which the socket is bound
    +
    See also
    listen
    + +
    +
    + +

    ◆ isBlocking()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Socket::isBlocking () const
    +
    +inherited
    +
    + +

    Tell whether the socket is in blocking or non-blocking mode.

    +
    Returns
    True if the socket is blocking, false otherwise
    +
    See also
    setBlocking
    + +
    +
    + +

    ◆ listen()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Status sf::TcpListener::listen (unsigned short port,
    const IpAddressaddress = IpAddress::Any 
    )
    +
    + +

    Start listening for incoming connection attempts.

    +

    This function makes the socket start listening on the specified port, waiting for incoming connection attempts.

    +

    If the socket is already listening on a port when this function is called, it will stop listening on the old port before starting to listen on the new port.

    +
    Parameters
    + + + +
    portPort to listen on for incoming connection attempts
    addressAddress of the interface to listen on
    +
    +
    +
    Returns
    Status code
    +
    See also
    accept, close
    + +
    +
    + +

    ◆ setBlocking()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::setBlocking (bool blocking)
    +
    +inherited
    +
    + +

    Set the blocking state of the socket.

    +

    In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

    +
    Parameters
    + + +
    blockingTrue to set the socket as blocking, false for non-blocking
    +
    +
    +
    See also
    isBlocking
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1TcpListener.png b/SFML/doc/html/classsf_1_1TcpListener.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae34e9a41272af450ed3638226647bbc26e8d3b GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^nLymZ!3-oXyO`<&DTx4|5ZC|z{{xvX-h3_XKQsZz z0^*En!fxkv;L_i53iVCyLK%5I?t=d-%pjJ zi!Hog_1hfc_l&(BXQRk_Qd6>K%9hv%vvfD#cy&CirSyx+$+*`I`z!so9Xs}C%B|Py zQ{1igE??KCb@^KG^aZgqLw~1ktMkk9pCt2YlcuNnSFKC27gl?Gcl;dhJn7D_fS_}h z?i>#?YZ+TKdcJ%WZRJwdU7!#m!>QmkU;JVZ=L7wWV=N#3%`#-%vp>y;;r)6^;RC<3 zkA=)b_Ga|NpsdAadAH5gC;9C5&(dGN_~3PKkLesf5@y@3#paxPqVde#V|M?!Xw_T2 zuNSQGywvz^Lff03xb+|Zc3kvIVrKW4x4UD^Z0q*t+su+u=-QV`qdq=Z)b*-vSxT4Tz2TA^vBKd olmE|Ud2k)*E>SNp&7~ZFnT3nA?Q2rRK}nLq)78&qol`;+007cay#N3J literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1TcpSocket-members.html b/SFML/doc/html/classsf_1_1TcpSocket-members.html new file mode 100644 index 0000000..c819034 --- /dev/null +++ b/SFML/doc/html/classsf_1_1TcpSocket-members.html @@ -0,0 +1,91 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::TcpSocket Member List
    +
    +
    + +

    This is the complete list of members for sf::TcpSocket, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AnyPort enum valuesf::Socket
    close()sf::Socketprotected
    connect(const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)sf::TcpSocket
    create()sf::Socketprotected
    create(SocketHandle handle)sf::Socketprotected
    disconnect()sf::TcpSocket
    Disconnected enum valuesf::Socket
    Done enum valuesf::Socket
    Error enum valuesf::Socket
    getHandle() constsf::Socketprotected
    getLocalPort() constsf::TcpSocket
    getRemoteAddress() constsf::TcpSocket
    getRemotePort() constsf::TcpSocket
    isBlocking() constsf::Socket
    NotReady enum valuesf::Socket
    Partial enum valuesf::Socket
    receive(void *data, std::size_t size, std::size_t &received)sf::TcpSocket
    receive(Packet &packet)sf::TcpSocket
    send(const void *data, std::size_t size)sf::TcpSocket
    send(const void *data, std::size_t size, std::size_t &sent)sf::TcpSocket
    send(Packet &packet)sf::TcpSocket
    setBlocking(bool blocking)sf::Socket
    Socket(Type type)sf::Socketprotected
    Status enum namesf::Socket
    Tcp enum valuesf::Socketprotected
    TcpListener (defined in sf::TcpSocket)sf::TcpSocketfriend
    TcpSocket()sf::TcpSocket
    Type enum namesf::Socketprotected
    Udp enum valuesf::Socketprotected
    ~Socket()sf::Socketvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1TcpSocket.html b/SFML/doc/html/classsf_1_1TcpSocket.html new file mode 100644 index 0000000..f463ff5 --- /dev/null +++ b/SFML/doc/html/classsf_1_1TcpSocket.html @@ -0,0 +1,819 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized socket using the TCP protocol. + More...

    + +

    #include <TcpSocket.hpp>

    +
    +Inheritance diagram for sf::TcpSocket:
    +
    +
    + + +sf::Socket +sf::NonCopyable + +
    + + + + + + + + +

    +Public Types

    enum  Status {
    +  Done, +NotReady, +Partial, +Disconnected, +
    +  Error +
    + }
     Status codes that may be returned by socket functions. More...
     
    enum  { AnyPort = 0 + }
     Some special values used by sockets. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     TcpSocket ()
     Default constructor. More...
     
    unsigned short getLocalPort () const
     Get the port to which the socket is bound locally. More...
     
    IpAddress getRemoteAddress () const
     Get the address of the connected peer. More...
     
    unsigned short getRemotePort () const
     Get the port of the connected peer to which the socket is connected. More...
     
    Status connect (const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)
     Connect the socket to a remote peer. More...
     
    void disconnect ()
     Disconnect the socket from its remote peer. More...
     
    Status send (const void *data, std::size_t size)
     Send raw data to the remote peer. More...
     
    Status send (const void *data, std::size_t size, std::size_t &sent)
     Send raw data to the remote peer. More...
     
    Status receive (void *data, std::size_t size, std::size_t &received)
     Receive raw data from the remote peer. More...
     
    Status send (Packet &packet)
     Send a formatted packet of data to the remote peer. More...
     
    Status receive (Packet &packet)
     Receive a formatted packet of data from the remote peer. More...
     
    void setBlocking (bool blocking)
     Set the blocking state of the socket. More...
     
    bool isBlocking () const
     Tell whether the socket is in blocking or non-blocking mode. More...
     
    + + + + +

    +Protected Types

    enum  Type { Tcp, +Udp + }
     Types of protocols that the socket can use. More...
     
    + + + + + + + + + + + + + +

    +Protected Member Functions

    SocketHandle getHandle () const
     Return the internal handle of the socket. More...
     
    void create ()
     Create the internal representation of the socket. More...
     
    void create (SocketHandle handle)
     Create the internal representation of the socket from a socket handle. More...
     
    void close ()
     Close the socket gracefully. More...
     
    + + + +

    +Friends

    +class TcpListener
     
    +

    Detailed Description

    +

    Specialized socket using the TCP protocol.

    +

    TCP is a connected protocol, which means that a TCP socket can only communicate with the host it is connected to.

    +

    It can't send or receive anything if it is not connected.

    +

    The TCP protocol is reliable but adds a slight overhead. It ensures that your data will always be received in order and without errors (no data corrupted, lost or duplicated).

    +

    When a socket is connected to a remote host, you can retrieve informations about this host with the getRemoteAddress and getRemotePort functions. You can also get the local port to which the socket is bound (which is automatically chosen when the socket is connected), with the getLocalPort function.

    +

    Sending and receiving data can use either the low-level or the high-level functions. The low-level functions process a raw sequence of bytes, and cannot ensure that one call to Send will exactly match one call to Receive at the other end of the socket.

    +

    The high-level interface uses packets (see sf::Packet), which are easier to use and provide more safety regarding the data that is exchanged. You can look at the sf::Packet class to get more details about how they work.

    +

    The socket is automatically disconnected when it is destroyed, but if you want to explicitly close the connection while the socket instance is still alive, you can call disconnect.

    +

    Usage example:

    // ----- The client -----
    // Create a socket and connect it to 192.168.1.50 on port 55001
    socket.connect("192.168.1.50", 55001);
    // Send a message to the connected host
    std::string message = "Hi, I am a client";
    socket.send(message.c_str(), message.size() + 1);
    // Receive an answer from the server
    char buffer[1024];
    std::size_t received = 0;
    socket.receive(buffer, sizeof(buffer), received);
    std::cout << "The server said: " << buffer << std::endl;
    // ----- The server -----
    // Create a listener to wait for incoming connections on port 55001
    sf::TcpListener listener;
    listener.listen(55001);
    // Wait for a connection
    listener.accept(socket);
    std::cout << "New client connected: " << socket.getRemoteAddress() << std::endl;
    // Receive a message from the client
    char buffer[1024];
    std::size_t received = 0;
    socket.receive(buffer, sizeof(buffer), received);
    std::cout << "The client said: " << buffer << std::endl;
    // Send an answer
    std::string message = "Welcome, client";
    socket.send(message.c_str(), message.size() + 1);
    See also
    sf::Socket, sf::UdpSocket, sf::Packet
    + +

    Definition at line 46 of file TcpSocket.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + + +
    + + + + +
    anonymous enum
    +
    +inherited
    +
    + +

    Some special values used by sockets.

    + + +
    Enumerator
    AnyPort 

    Special value that tells the system to pick any available port.

    +
    + +

    Definition at line 66 of file Socket.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Status
    +
    +inherited
    +
    + +

    Status codes that may be returned by socket functions.

    + + + + + + +
    Enumerator
    Done 

    The socket has sent / received the data.

    +
    NotReady 

    The socket is not ready to send / receive data yet.

    +
    Partial 

    The socket sent a part of the data.

    +
    Disconnected 

    The TCP socket has been disconnected.

    +
    Error 

    An unexpected error happened.

    +
    + +

    Definition at line 53 of file Socket.hpp.

    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Type
    +
    +protectedinherited
    +
    + +

    Types of protocols that the socket can use.

    + + + +
    Enumerator
    Tcp 

    TCP protocol.

    +
    Udp 

    UDP protocol.

    +
    + +

    Definition at line 114 of file Socket.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ TcpSocket()

    + +
    +
    + + + + + + + +
    sf::TcpSocket::TcpSocket ()
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ close()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::close ()
    +
    +protectedinherited
    +
    + +

    Close the socket gracefully.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ connect()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::TcpSocket::connect (const IpAddressremoteAddress,
    unsigned short remotePort,
    Time timeout = Time::Zero 
    )
    +
    + +

    Connect the socket to a remote peer.

    +

    In blocking mode, this function may take a while, especially if the remote peer is not reachable. The last parameter allows you to stop trying to connect after a given timeout. If the socket is already connected, the connection is forcibly disconnected before attempting to connect again.

    +
    Parameters
    + + + + +
    remoteAddressAddress of the remote peer
    remotePortPort of the remote peer
    timeoutOptional maximum time to wait
    +
    +
    +
    Returns
    Status code
    +
    See also
    disconnect
    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::create ()
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::create (SocketHandle handle)
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket from a socket handle.

    +

    This function can only be accessed by derived classes.

    +
    Parameters
    + + +
    handleOS-specific handle of the socket to wrap
    +
    +
    + +
    +
    + +

    ◆ disconnect()

    + +
    +
    + + + + + + + +
    void sf::TcpSocket::disconnect ()
    +
    + +

    Disconnect the socket from its remote peer.

    +

    This function gracefully closes the connection. If the socket is not connected, this function has no effect.

    +
    See also
    connect
    + +
    +
    + +

    ◆ getHandle()

    + +
    +
    + + + + + +
    + + + + + + + +
    SocketHandle sf::Socket::getHandle () const
    +
    +protectedinherited
    +
    + +

    Return the internal handle of the socket.

    +

    The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

    +
    Returns
    The internal (OS-specific) handle of the socket
    + +
    +
    + +

    ◆ getLocalPort()

    + +
    +
    + + + + + + + +
    unsigned short sf::TcpSocket::getLocalPort () const
    +
    + +

    Get the port to which the socket is bound locally.

    +

    If the socket is not connected, this function returns 0.

    +
    Returns
    Port to which the socket is bound
    +
    See also
    connect, getRemotePort
    + +
    +
    + +

    ◆ getRemoteAddress()

    + +
    +
    + + + + + + + +
    IpAddress sf::TcpSocket::getRemoteAddress () const
    +
    + +

    Get the address of the connected peer.

    +

    It the socket is not connected, this function returns sf::IpAddress::None.

    +
    Returns
    Address of the remote peer
    +
    See also
    getRemotePort
    + +
    +
    + +

    ◆ getRemotePort()

    + +
    +
    + + + + + + + +
    unsigned short sf::TcpSocket::getRemotePort () const
    +
    + +

    Get the port of the connected peer to which the socket is connected.

    +

    If the socket is not connected, this function returns 0.

    +
    Returns
    Remote port to which the socket is connected
    +
    See also
    getRemoteAddress
    + +
    +
    + +

    ◆ isBlocking()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Socket::isBlocking () const
    +
    +inherited
    +
    + +

    Tell whether the socket is in blocking or non-blocking mode.

    +
    Returns
    True if the socket is blocking, false otherwise
    +
    See also
    setBlocking
    + +
    +
    + +

    ◆ receive() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::TcpSocket::receive (void * data,
    std::size_t size,
    std::size_t & received 
    )
    +
    + +

    Receive raw data from the remote peer.

    +

    In blocking mode, this function will wait until some bytes are actually received. This function will fail if the socket is not connected.

    +
    Parameters
    + + + + +
    dataPointer to the array to fill with the received bytes
    sizeMaximum number of bytes that can be received
    receivedThis variable is filled with the actual number of bytes received
    +
    +
    +
    Returns
    Status code
    +
    See also
    send
    + +
    +
    + +

    ◆ receive() [2/2]

    + +
    +
    + + + + + + + + +
    Status sf::TcpSocket::receive (Packetpacket)
    +
    + +

    Receive a formatted packet of data from the remote peer.

    +

    In blocking mode, this function will wait until the whole packet has been received. This function will fail if the socket is not connected.

    +
    Parameters
    + + +
    packetPacket to fill with the received data
    +
    +
    +
    Returns
    Status code
    +
    See also
    send
    + +
    +
    + +

    ◆ send() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Status sf::TcpSocket::send (const void * data,
    std::size_t size 
    )
    +
    + +

    Send raw data to the remote peer.

    +

    To be able to handle partial sends over non-blocking sockets, use the send(const void*, std::size_t, std::size_t&) overload instead. This function will fail if the socket is not connected.

    +
    Parameters
    + + + +
    dataPointer to the sequence of bytes to send
    sizeNumber of bytes to send
    +
    +
    +
    Returns
    Status code
    +
    See also
    receive
    + +
    +
    + +

    ◆ send() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::TcpSocket::send (const void * data,
    std::size_t size,
    std::size_t & sent 
    )
    +
    + +

    Send raw data to the remote peer.

    +

    This function will fail if the socket is not connected.

    +
    Parameters
    + + + + +
    dataPointer to the sequence of bytes to send
    sizeNumber of bytes to send
    sentThe number of bytes sent will be written here
    +
    +
    +
    Returns
    Status code
    +
    See also
    receive
    + +
    +
    + +

    ◆ send() [3/3]

    + +
    +
    + + + + + + + + +
    Status sf::TcpSocket::send (Packetpacket)
    +
    + +

    Send a formatted packet of data to the remote peer.

    +

    In non-blocking mode, if this function returns sf::Socket::Partial, you must retry sending the same unmodified packet before sending anything else in order to guarantee the packet arrives at the remote peer uncorrupted. This function will fail if the socket is not connected.

    +
    Parameters
    + + +
    packetPacket to send
    +
    +
    +
    Returns
    Status code
    +
    See also
    receive
    + +
    +
    + +

    ◆ setBlocking()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::setBlocking (bool blocking)
    +
    +inherited
    +
    + +

    Set the blocking state of the socket.

    +

    In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

    +
    Parameters
    + + +
    blockingTrue to set the socket as blocking, false for non-blocking
    +
    +
    +
    See also
    isBlocking
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1TcpSocket.png b/SFML/doc/html/classsf_1_1TcpSocket.png new file mode 100644 index 0000000000000000000000000000000000000000..ed81a9a8cb6a6595a5dc39af72ae86e46d1ab0ab GIT binary patch literal 722 zcmV;@0xkWCP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0007ENklJl3wV!-iB>Rb#YDC=RBB}RId}#BemIXNP$Uda(T`ZrM7l@H@0Rhqz9+G zk*+#Uw;E73+)nSsn$1~KyX79fOKNWQ#TTTmIk|)HlGX!E-7=HaKh_a8(T5~^tR4RF zoUF(C{$%g9N3tQkJg3G(g=ziNG-zY962Cm9e=oczNds!SDM^R=7U>l9Ez&t?{;wfP z!}?KDj4^r$;A7nYT;xW&-Mmn4qy^-J@*@Fw>Gvv{H39q&nl%AjU$Z8F>uc5oaDC01 z0IsiDQ~tylql<`=3f3;V@xseu-6UvYD zlir&ofMHD%z^En(U{sR?Fsexc7}X>JjB1hqMm0(K6G8|sA^tPCKNsFwnim z5v}*i-_zE6>u!u^hJPc*e^Dk0U{sR?Fe+D42qAdr58tdSG%Va8a{vGU07*qoM6N<$ Eg6IQNTmS$7 literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Text-members.html b/SFML/doc/html/classsf_1_1Text-members.html new file mode 100644 index 0000000..fad5478 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Text-members.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Text Member List
    +
    +
    + +

    This is the complete list of members for sf::Text, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bold enum valuesf::Text
    findCharacterPos(std::size_t index) constsf::Text
    getCharacterSize() constsf::Text
    getColor() constsf::Text
    getFillColor() constsf::Text
    getFont() constsf::Text
    getGlobalBounds() constsf::Text
    getInverseTransform() constsf::Transformable
    getLetterSpacing() constsf::Text
    getLineSpacing() constsf::Text
    getLocalBounds() constsf::Text
    getOrigin() constsf::Transformable
    getOutlineColor() constsf::Text
    getOutlineThickness() constsf::Text
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getString() constsf::Text
    getStyle() constsf::Text
    getTransform() constsf::Transformable
    Italic enum valuesf::Text
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    Regular enum valuesf::Text
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setCharacterSize(unsigned int size)sf::Text
    setColor(const Color &color)sf::Text
    setFillColor(const Color &color)sf::Text
    setFont(const Font &font)sf::Text
    setLetterSpacing(float spacingFactor)sf::Text
    setLineSpacing(float spacingFactor)sf::Text
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setOutlineColor(const Color &color)sf::Text
    setOutlineThickness(float thickness)sf::Text
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    setString(const String &string)sf::Text
    setStyle(Uint32 style)sf::Text
    StrikeThrough enum valuesf::Text
    Style enum namesf::Text
    Text()sf::Text
    Text(const String &string, const Font &font, unsigned int characterSize=30)sf::Text
    Transformable()sf::Transformable
    Underlined enum valuesf::Text
    ~Drawable()sf::Drawableinlinevirtual
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Text.html b/SFML/doc/html/classsf_1_1Text.html new file mode 100644 index 0000000..18f766d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Text.html @@ -0,0 +1,1557 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Graphical text that can be drawn to a render target. + More...

    + +

    #include <Text.hpp>

    +
    +Inheritance diagram for sf::Text:
    +
    +
    + + +sf::Drawable +sf::Transformable + +
    + + + + + +

    +Public Types

    enum  Style {
    +  Regular = 0, +Bold = 1 << 0, +Italic = 1 << 1, +Underlined = 1 << 2, +
    +  StrikeThrough = 1 << 3 +
    + }
     Enumeration of the string drawing styles. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Text ()
     Default constructor. More...
     
     Text (const String &string, const Font &font, unsigned int characterSize=30)
     Construct the text from a string, font and size. More...
     
    void setString (const String &string)
     Set the text's string. More...
     
    void setFont (const Font &font)
     Set the text's font. More...
     
    void setCharacterSize (unsigned int size)
     Set the character size. More...
     
    void setLineSpacing (float spacingFactor)
     Set the line spacing factor. More...
     
    void setLetterSpacing (float spacingFactor)
     Set the letter spacing factor. More...
     
    void setStyle (Uint32 style)
     Set the text's style. More...
     
    void setColor (const Color &color)
     Set the fill color of the text. More...
     
    void setFillColor (const Color &color)
     Set the fill color of the text. More...
     
    void setOutlineColor (const Color &color)
     Set the outline color of the text. More...
     
    void setOutlineThickness (float thickness)
     Set the thickness of the text's outline. More...
     
    const StringgetString () const
     Get the text's string. More...
     
    const FontgetFont () const
     Get the text's font. More...
     
    unsigned int getCharacterSize () const
     Get the character size. More...
     
    float getLetterSpacing () const
     Get the size of the letter spacing factor. More...
     
    float getLineSpacing () const
     Get the size of the line spacing factor. More...
     
    Uint32 getStyle () const
     Get the text's style. More...
     
    const ColorgetColor () const
     Get the fill color of the text. More...
     
    const ColorgetFillColor () const
     Get the fill color of the text. More...
     
    const ColorgetOutlineColor () const
     Get the outline color of the text. More...
     
    float getOutlineThickness () const
     Get the outline thickness of the text. More...
     
    Vector2f findCharacterPos (std::size_t index) const
     Return the position of the index-th character. More...
     
    FloatRect getLocalBounds () const
     Get the local bounding rectangle of the entity. More...
     
    FloatRect getGlobalBounds () const
     Get the global bounding rectangle of the entity. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    +

    Detailed Description

    +

    Graphical text that can be drawn to a render target.

    +

    sf::Text is a drawable class that allows to easily display some text with custom style and color on a render target.

    +

    It inherits all the functions from sf::Transformable: position, rotation, scale, origin. It also adds text-specific properties such as the font to use, the character size, the font style (bold, italic, underlined and strike through), the text color, the outline thickness, the outline color, the character spacing, the line spacing and the text to display of course. It also provides convenience functions to calculate the graphical size of the text, or to get the global position of a given character.

    +

    sf::Text works in combination with the sf::Font class, which loads and provides the glyphs (visual characters) of a given font.

    +

    The separation of sf::Font and sf::Text allows more flexibility and better performances: indeed a sf::Font is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Text is a lightweight object which can combine the glyphs data and metrics of a sf::Font to display any text on a render target.

    +

    It is important to note that the sf::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a sf::Font must not be destructed while it is used by a sf::Text (i.e. never write a function that uses a local sf::Font instance for creating a text).

    +

    See also the note on coordinates and undistorted rendering in sf::Transformable.

    +

    Usage example:

    // Declare and load a font
    sf::Font font;
    font.loadFromFile("arial.ttf");
    // Create a text
    sf::Text text("hello", font);
    // Draw it
    window.draw(text);
    See also
    sf::Font, sf::Transformable
    + +

    Definition at line 48 of file Text.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Style

    + +
    +
    + + + + +
    enum sf::Text::Style
    +
    + +

    Enumeration of the string drawing styles.

    + + + + + + +
    Enumerator
    Regular 

    Regular characters, no style.

    +
    Bold 

    Bold characters.

    +
    Italic 

    Italic characters.

    +
    Underlined 

    Underlined characters.

    +
    StrikeThrough 

    Strike through characters.

    +
    + +

    Definition at line 56 of file Text.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Text() [1/2]

    + +
    +
    + + + + + + + +
    sf::Text::Text ()
    +
    + +

    Default constructor.

    +

    Creates an empty text.

    + +
    +
    + +

    ◆ Text() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Text::Text (const Stringstring,
    const Fontfont,
    unsigned int characterSize = 30 
    )
    +
    + +

    Construct the text from a string, font and size.

    +

    Note that if the used font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when setting the character size. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

    +
    Parameters
    + + + + +
    stringText assigned to the string
    fontFont used to draw the string
    characterSizeBase size of characters, in pixels
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ findCharacterPos()

    + +
    +
    + + + + + + + + +
    Vector2f sf::Text::findCharacterPos (std::size_t index) const
    +
    + +

    Return the position of the index-th character.

    +

    This function computes the visual position of a character from its index in the string. The returned position is in global coordinates (translation, rotation, scale and origin are applied). If index is out of range, the position of the end of the string is returned.

    +
    Parameters
    + + +
    indexIndex of the character
    +
    +
    +
    Returns
    Position of the character
    + +
    +
    + +

    ◆ getCharacterSize()

    + +
    +
    + + + + + + + +
    unsigned int sf::Text::getCharacterSize () const
    +
    + +

    Get the character size.

    +
    Returns
    Size of the characters, in pixels
    +
    See also
    setCharacterSize
    + +
    +
    + +

    ◆ getColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Text::getColor () const
    +
    + +

    Get the fill color of the text.

    +
    Returns
    Fill color of the text
    +
    See also
    setFillColor
    +
    Deprecated:
    There is now fill and outline colors instead of a single global color. Use getFillColor() or getOutlineColor() instead.
    + +
    +
    + +

    ◆ getFillColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Text::getFillColor () const
    +
    + +

    Get the fill color of the text.

    +
    Returns
    Fill color of the text
    +
    See also
    setFillColor
    + +
    +
    + +

    ◆ getFont()

    + +
    +
    + + + + + + + +
    const Font* sf::Text::getFont () const
    +
    + +

    Get the text's font.

    +

    If the text has no font attached, a NULL pointer is returned. The returned pointer is const, which means that you cannot modify the font when you get it from this function.

    +
    Returns
    Pointer to the text's font
    +
    See also
    setFont
    + +
    +
    + +

    ◆ getGlobalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Text::getGlobalBounds () const
    +
    + +

    Get the global bounding rectangle of the entity.

    +

    The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the text in the global 2D world's coordinate system.

    +
    Returns
    Global bounding rectangle of the entity
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    +inherited
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getLetterSpacing()

    + +
    +
    + + + + + + + +
    float sf::Text::getLetterSpacing () const
    +
    + +

    Get the size of the letter spacing factor.

    +
    Returns
    Size of the letter spacing factor
    +
    See also
    setLetterSpacing
    + +
    +
    + +

    ◆ getLineSpacing()

    + +
    +
    + + + + + + + +
    float sf::Text::getLineSpacing () const
    +
    + +

    Get the size of the line spacing factor.

    +
    Returns
    Size of the line spacing factor
    +
    See also
    setLineSpacing
    + +
    +
    + +

    ◆ getLocalBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::Text::getLocalBounds () const
    +
    + +

    Get the local bounding rectangle of the entity.

    +

    The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

    +
    Returns
    Local bounding rectangle of the entity
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    +inherited
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getOutlineColor()

    + +
    +
    + + + + + + + +
    const Color& sf::Text::getOutlineColor () const
    +
    + +

    Get the outline color of the text.

    +
    Returns
    Outline color of the text
    +
    See also
    setOutlineColor
    + +
    +
    + +

    ◆ getOutlineThickness()

    + +
    +
    + + + + + + + +
    float sf::Text::getOutlineThickness () const
    +
    + +

    Get the outline thickness of the text.

    +
    Returns
    Outline thickness of the text, in pixels
    +
    See also
    setOutlineThickness
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    +inherited
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    +inherited
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    +inherited
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getString()

    + +
    +
    + + + + + + + +
    const String& sf::Text::getString () const
    +
    + +

    Get the text's string.

    +

    The returned string is a sf::String, which can automatically be converted to standard string types. So, the following lines of code are all valid:

    sf::String s1 = text.getString();
    std::string s2 = text.getString();
    std::wstring s3 = text.getString();
    Returns
    Text's string
    +
    See also
    setString
    + +
    +
    + +

    ◆ getStyle()

    + +
    +
    + + + + + + + +
    Uint32 sf::Text::getStyle () const
    +
    + +

    Get the text's style.

    +
    Returns
    Text's style
    +
    See also
    setStyle
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    +inherited
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    +inherited
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    +inherited
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    +inherited
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setCharacterSize()

    + +
    +
    + + + + + + + + +
    void sf::Text::setCharacterSize (unsigned int size)
    +
    + +

    Set the character size.

    +

    The default size is 30.

    +

    Note that if the used font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when setting the character size. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

    +
    Parameters
    + + +
    sizeNew character size, in pixels
    +
    +
    +
    See also
    getCharacterSize
    + +
    +
    + +

    ◆ setColor()

    + +
    +
    + + + + + + + + +
    void sf::Text::setColor (const Colorcolor)
    +
    + +

    Set the fill color of the text.

    +

    By default, the text's fill color is opaque white. Setting the fill color to a transparent color with an outline will cause the outline to be displayed in the fill area of the text.

    +
    Parameters
    + + +
    colorNew fill color of the text
    +
    +
    +
    See also
    getFillColor
    +
    Deprecated:
    There is now fill and outline colors instead of a single global color. Use setFillColor() or setOutlineColor() instead.
    + +
    +
    + +

    ◆ setFillColor()

    + +
    +
    + + + + + + + + +
    void sf::Text::setFillColor (const Colorcolor)
    +
    + +

    Set the fill color of the text.

    +

    By default, the text's fill color is opaque white. Setting the fill color to a transparent color with an outline will cause the outline to be displayed in the fill area of the text.

    +
    Parameters
    + + +
    colorNew fill color of the text
    +
    +
    +
    See also
    getFillColor
    + +
    +
    + +

    ◆ setFont()

    + +
    +
    + + + + + + + + +
    void sf::Text::setFont (const Fontfont)
    +
    + +

    Set the text's font.

    +

    The font argument refers to a font that must exist as long as the text uses it. Indeed, the text doesn't store its own copy of the font, but rather keeps a pointer to the one that you passed to this function. If the font is destroyed and the text tries to use it, the behavior is undefined.

    +
    Parameters
    + + +
    fontNew font
    +
    +
    +
    See also
    getFont
    + +
    +
    + +

    ◆ setLetterSpacing()

    + +
    +
    + + + + + + + + +
    void sf::Text::setLetterSpacing (float spacingFactor)
    +
    + +

    Set the letter spacing factor.

    +

    The default spacing between letters is defined by the font. This factor doesn't directly apply to the existing spacing between each character, it rather adds a fixed space between them which is calculated from the font metrics and the character size. Note that factors below 1 (including negative numbers) bring characters closer to each other. By default the letter spacing factor is 1.

    +
    Parameters
    + + +
    spacingFactorNew letter spacing factor
    +
    +
    +
    See also
    getLetterSpacing
    + +
    +
    + +

    ◆ setLineSpacing()

    + +
    +
    + + + + + + + + +
    void sf::Text::setLineSpacing (float spacingFactor)
    +
    + +

    Set the line spacing factor.

    +

    The default spacing between lines is defined by the font. This method enables you to set a factor for the spacing between lines. By default the line spacing factor is 1.

    +
    Parameters
    + + +
    spacingFactorNew line spacing factor
    +
    +
    +
    See also
    getLineSpacing
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    +inherited
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOutlineColor()

    + +
    +
    + + + + + + + + +
    void sf::Text::setOutlineColor (const Colorcolor)
    +
    + +

    Set the outline color of the text.

    +

    By default, the text's outline color is opaque black.

    +
    Parameters
    + + +
    colorNew outline color of the text
    +
    +
    +
    See also
    getOutlineColor
    + +
    +
    + +

    ◆ setOutlineThickness()

    + +
    +
    + + + + + + + + +
    void sf::Text::setOutlineThickness (float thickness)
    +
    + +

    Set the thickness of the text's outline.

    +

    By default, the outline thickness is 0.

    +

    Be aware that using a negative value for the outline thickness will cause distorted rendering.

    +
    Parameters
    + + +
    thicknessNew outline thickness, in pixels
    +
    +
    +
    See also
    getOutlineThickness
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    +inherited
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    +inherited
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    +inherited
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setString()

    + +
    +
    + + + + + + + + +
    void sf::Text::setString (const Stringstring)
    +
    + +

    Set the text's string.

    +

    The string argument is a sf::String, which can automatically be constructed from standard string types. So, the following calls are all valid:

    text.setString("hello");
    text.setString(L"hello");
    text.setString(std::string("hello"));
    text.setString(std::wstring(L"hello"));

    A text's string is empty by default.

    +
    Parameters
    + + +
    stringNew string
    +
    +
    +
    See also
    getString
    + +
    +
    + +

    ◆ setStyle()

    + +
    +
    + + + + + + + + +
    void sf::Text::setStyle (Uint32 style)
    +
    + +

    Set the text's style.

    +

    You can pass a combination of one or more styles, for example sf::Text::Bold | sf::Text::Italic. The default style is sf::Text::Regular.

    +
    Parameters
    + + +
    styleNew style
    +
    +
    +
    See also
    getStyle
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Text.png b/SFML/doc/html/classsf_1_1Text.png new file mode 100644 index 0000000000000000000000000000000000000000..582905f3f8afb8f01075488dd664cb1f77b9d662 GIT binary patch literal 710 zcmV;%0y+JOP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d00072NklfUBw?jFxf=NY9^IV5k+QNhw&Bfz3&F=$9wO)ftRFC#FCQK z36qqhQ!zk}a#?)}bQtPE9>pY%B)6H<=#k|clJPZ9Nk~$W zzetYvE4rg$F#fvncRCaPO@x`hr`BVY`(2RCB5kqqb)%W{{Bcg0Hy1%IiLzw4a8XDk z*W;Vys+wIWNhy2DJklB~I_jkOyAe)~-}2-oiK^tjT$9|BwYC&rkt~*L8YjEaDUXvl zDA&4V=nc_Yas7s(D%WeJTx*iax=|e#B@dFQHlFSN>?GHPqAgLVZb`~0HlFN)U99ac zt^M;b=Rz1 zYe^ivCnf1zYVS!&YKTcn(y5rFB(=dLCFxX5Qj*&6Et1}Q--}4nd+&Pz@B#xsfBJ^~ z2FYRgh-Kff-yr!L>=TxK!+wRNbyt8^m?Xfdm?S_OOcLN!OcJ0CCJAsV-yt~+!|(wB zuE1py1$Y&c1h@kx32+BY65tM)B)}aoNq{?Gk^pzWBmw>x&N~@utN;K2 literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1Texture-members.html b/SFML/doc/html/classsf_1_1Texture-members.html new file mode 100644 index 0000000..c35fed3 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Texture-members.html @@ -0,0 +1,100 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Texture Member List
    +
    +
    + +

    This is the complete list of members for sf::Texture, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bind(const Texture *texture, CoordinateType coordinateType=Normalized)sf::Texturestatic
    CoordinateType enum namesf::Texture
    copyToImage() constsf::Texture
    create(unsigned int width, unsigned int height)sf::Texture
    generateMipmap()sf::Texture
    getMaximumSize()sf::Texturestatic
    getNativeHandle() constsf::Texture
    getSize() constsf::Texture
    GlResource()sf::GlResourceprivate
    isRepeated() constsf::Texture
    isSmooth() constsf::Texture
    isSrgb() constsf::Texture
    loadFromFile(const std::string &filename, const IntRect &area=IntRect())sf::Texture
    loadFromImage(const Image &image, const IntRect &area=IntRect())sf::Texture
    loadFromMemory(const void *data, std::size_t size, const IntRect &area=IntRect())sf::Texture
    loadFromStream(InputStream &stream, const IntRect &area=IntRect())sf::Texture
    Normalized enum valuesf::Texture
    operator=(const Texture &right)sf::Texture
    Pixels enum valuesf::Texture
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
    RenderTarget (defined in sf::Texture)sf::Texturefriend
    RenderTexture (defined in sf::Texture)sf::Texturefriend
    setRepeated(bool repeated)sf::Texture
    setSmooth(bool smooth)sf::Texture
    setSrgb(bool sRgb)sf::Texture
    swap(Texture &right)sf::Texture
    Text (defined in sf::Texture)sf::Texturefriend
    Texture()sf::Texture
    Texture(const Texture &copy)sf::Texture
    update(const Uint8 *pixels)sf::Texture
    update(const Uint8 *pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y)sf::Texture
    update(const Texture &texture)sf::Texture
    update(const Texture &texture, unsigned int x, unsigned int y)sf::Texture
    update(const Image &image)sf::Texture
    update(const Image &image, unsigned int x, unsigned int y)sf::Texture
    update(const Window &window)sf::Texture
    update(const Window &window, unsigned int x, unsigned int y)sf::Texture
    ~GlResource()sf::GlResourceprivate
    ~Texture()sf::Texture
    + + + + diff --git a/SFML/doc/html/classsf_1_1Texture.html b/SFML/doc/html/classsf_1_1Texture.html new file mode 100644 index 0000000..a9928c6 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Texture.html @@ -0,0 +1,1201 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Image living on the graphics card that can be used for drawing. + More...

    + +

    #include <Texture.hpp>

    +
    +Inheritance diagram for sf::Texture:
    +
    +
    + + +sf::GlResource + +
    + + + + + +

    +Public Types

    enum  CoordinateType { Normalized, +Pixels + }
     Types of texture coordinates that can be used for rendering. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Texture ()
     Default constructor. More...
     
     Texture (const Texture &copy)
     Copy constructor. More...
     
     ~Texture ()
     Destructor. More...
     
    bool create (unsigned int width, unsigned int height)
     Create the texture. More...
     
    bool loadFromFile (const std::string &filename, const IntRect &area=IntRect())
     Load the texture from a file on disk. More...
     
    bool loadFromMemory (const void *data, std::size_t size, const IntRect &area=IntRect())
     Load the texture from a file in memory. More...
     
    bool loadFromStream (InputStream &stream, const IntRect &area=IntRect())
     Load the texture from a custom stream. More...
     
    bool loadFromImage (const Image &image, const IntRect &area=IntRect())
     Load the texture from an image. More...
     
    Vector2u getSize () const
     Return the size of the texture. More...
     
    Image copyToImage () const
     Copy the texture pixels to an image. More...
     
    void update (const Uint8 *pixels)
     Update the whole texture from an array of pixels. More...
     
    void update (const Uint8 *pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y)
     Update a part of the texture from an array of pixels. More...
     
    void update (const Texture &texture)
     Update a part of this texture from another texture. More...
     
    void update (const Texture &texture, unsigned int x, unsigned int y)
     Update a part of this texture from another texture. More...
     
    void update (const Image &image)
     Update the texture from an image. More...
     
    void update (const Image &image, unsigned int x, unsigned int y)
     Update a part of the texture from an image. More...
     
    void update (const Window &window)
     Update the texture from the contents of a window. More...
     
    void update (const Window &window, unsigned int x, unsigned int y)
     Update a part of the texture from the contents of a window. More...
     
    void setSmooth (bool smooth)
     Enable or disable the smooth filter. More...
     
    bool isSmooth () const
     Tell whether the smooth filter is enabled or not. More...
     
    void setSrgb (bool sRgb)
     Enable or disable conversion from sRGB. More...
     
    bool isSrgb () const
     Tell whether the texture source is converted from sRGB or not. More...
     
    void setRepeated (bool repeated)
     Enable or disable repeating. More...
     
    bool isRepeated () const
     Tell whether the texture is repeated or not. More...
     
    bool generateMipmap ()
     Generate a mipmap using the current texture data. More...
     
    Textureoperator= (const Texture &right)
     Overload of assignment operator. More...
     
    void swap (Texture &right)
     Swap the contents of this texture with those of another. More...
     
    unsigned int getNativeHandle () const
     Get the underlying OpenGL handle of the texture. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static void bind (const Texture *texture, CoordinateType coordinateType=Normalized)
     Bind a texture for rendering. More...
     
    static unsigned int getMaximumSize ()
     Get the maximum texture size allowed. More...
     
    + + + + +

    +Static Private Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    + + + + + + + +

    +Friends

    +class Text
     
    +class RenderTexture
     
    +class RenderTarget
     
    +

    Detailed Description

    +

    Image living on the graphics card that can be used for drawing.

    +

    sf::Texture stores pixels that can be drawn, with a sprite for example.

    +

    A texture lives in the graphics card memory, therefore it is very fast to draw a texture to a render target, or copy a render target to a texture (the graphics card can access both directly).

    +

    Being stored in the graphics card memory has some drawbacks. A texture cannot be manipulated as freely as a sf::Image, you need to prepare the pixels first and then upload them to the texture in a single operation (see Texture::update).

    +

    sf::Texture makes it easy to convert from/to sf::Image, but keep in mind that these calls require transfers between the graphics card and the central memory, therefore they are slow operations.

    +

    A texture can be loaded from an image, but also directly from a file/memory/stream. The necessary shortcuts are defined so that you don't need an image first for the most common cases. However, if you want to perform some modifications on the pixels before creating the final texture, you can load your file to a sf::Image, do whatever you need with the pixels, and then call Texture::loadFromImage.

    +

    Since they live in the graphics card memory, the pixels of a texture cannot be accessed without a slow copy first. And they cannot be accessed individually. Therefore, if you need to read the texture's pixels (like for pixel-perfect collisions), it is recommended to store the collision information separately, for example in an array of booleans.

    +

    Like sf::Image, sf::Texture can handle a unique internal representation of pixels, which is RGBA 32 bits. This means that a pixel must be composed of 8 bits red, green, blue and alpha channels – just like a sf::Color.

    +

    Usage example:

    // This example shows the most common use of sf::Texture:
    // drawing a sprite
    // Load a texture from a file
    sf::Texture texture;
    if (!texture.loadFromFile("texture.png"))
    return -1;
    // Assign it to a sprite
    sf::Sprite sprite;
    sprite.setTexture(texture);
    // Draw the textured sprite
    window.draw(sprite);
    // This example shows another common use of sf::Texture:
    // streaming real-time data, like video frames
    // Create an empty texture
    sf::Texture texture;
    if (!texture.create(640, 480))
    return -1;
    // Create a sprite that will display the texture
    sf::Sprite sprite(texture);
    while (...) // the main loop
    {
    ...
    // update the texture
    sf::Uint8* pixels = ...; // get a fresh chunk of pixels (the next frame of a movie, for example)
    texture.update(pixels);
    // draw it
    window.draw(sprite);
    ...
    }

    Like sf::Shader that can be used as a raw OpenGL shader, sf::Texture can also be used directly as a raw texture for custom OpenGL geometry.

    ... render OpenGL geometry ...
    sf::Texture::bind(NULL);
    See also
    sf::Sprite, sf::Image, sf::RenderTexture
    + +

    Definition at line 48 of file Texture.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ CoordinateType

    + +
    +
    + + + + +
    enum sf::Texture::CoordinateType
    +
    + +

    Types of texture coordinates that can be used for rendering.

    + + + +
    Enumerator
    Normalized 

    Texture coordinates in range [0 .. 1].

    +
    Pixels 

    Texture coordinates in range [0 .. size].

    +
    + +

    Definition at line 56 of file Texture.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Texture() [1/2]

    + +
    +
    + + + + + + + +
    sf::Texture::Texture ()
    +
    + +

    Default constructor.

    +

    Creates an empty texture.

    + +
    +
    + +

    ◆ Texture() [2/2]

    + +
    +
    + + + + + + + + +
    sf::Texture::Texture (const Texturecopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyinstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~Texture()

    + +
    +
    + + + + + + + +
    sf::Texture::~Texture ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ bind()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void sf::Texture::bind (const Texturetexture,
    CoordinateType coordinateType = Normalized 
    )
    +
    +static
    +
    + +

    Bind a texture for rendering.

    +

    This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::Texture with OpenGL code.

    +
    sf::Texture t1, t2;
    ...
    sf::Texture::bind(&t1);
    // draw OpenGL stuff that use t1...
    // draw OpenGL stuff that use t2...
    // draw OpenGL stuff that use no texture...

    The coordinateType argument controls how texture coordinates will be interpreted. If Normalized (the default), they must be in range [0 .. 1], which is the default way of handling texture coordinates with OpenGL. If Pixels, they must be given in pixels (range [0 .. size]). This mode is used internally by the graphics classes of SFML, it makes the definition of texture coordinates more intuitive for the high-level API, users don't need to compute normalized values.

    +
    Parameters
    + + + +
    texturePointer to the texture to bind, can be null to use no texture
    coordinateTypeType of texture coordinates to use
    +
    +
    + +
    +
    + +

    ◆ copyToImage()

    + +
    +
    + + + + + + + +
    Image sf::Texture::copyToImage () const
    +
    + +

    Copy the texture pixels to an image.

    +

    This function performs a slow operation that downloads the texture's pixels from the graphics card and copies them to a new image, potentially applying transformations to pixels if necessary (texture may be padded or flipped).

    +
    Returns
    Image containing the texture's pixels
    +
    See also
    loadFromImage
    + +
    +
    + +

    ◆ create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Texture::create (unsigned int width,
    unsigned int height 
    )
    +
    + +

    Create the texture.

    +

    If this function fails, the texture is left unchanged.

    +
    Parameters
    + + + +
    widthWidth of the texture
    heightHeight of the texture
    +
    +
    +
    Returns
    True if creation was successful
    + +
    +
    + +

    ◆ generateMipmap()

    + +
    +
    + + + + + + + +
    bool sf::Texture::generateMipmap ()
    +
    + +

    Generate a mipmap using the current texture data.

    +

    Mipmaps are pre-computed chains of optimized textures. Each level of texture in a mipmap is generated by halving each of the previous level's dimensions. This is done until the final level has the size of 1x1. The textures generated in this process may make use of more advanced filters which might improve the visual quality of textures when they are applied to objects much smaller than they are. This is known as minification. Because fewer texels (texture elements) have to be sampled from when heavily minified, usage of mipmaps can also improve rendering performance in certain scenarios.

    +

    Mipmap generation relies on the necessary OpenGL extension being available. If it is unavailable or generation fails due to another reason, this function will return false. Mipmap data is only valid from the time it is generated until the next time the base level image is modified, at which point this function will have to be called again to regenerate it.

    +
    Returns
    True if mipmap generation was successful, false if unsuccessful
    + +
    +
    + +

    ◆ getMaximumSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    static unsigned int sf::Texture::getMaximumSize ()
    +
    +static
    +
    + +

    Get the maximum texture size allowed.

    +

    This maximum size is defined by the graphics driver. You can expect a value of 512 pixels for low-end graphics card, and up to 8192 pixels or more for newer hardware.

    +
    Returns
    Maximum size allowed for textures, in pixels
    + +
    +
    + +

    ◆ getNativeHandle()

    + +
    +
    + + + + + + + +
    unsigned int sf::Texture::getNativeHandle () const
    +
    + +

    Get the underlying OpenGL handle of the texture.

    +

    You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

    +
    Returns
    OpenGL handle of the texture or 0 if not yet created
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    Vector2u sf::Texture::getSize () const
    +
    + +

    Return the size of the texture.

    +
    Returns
    Size in pixels
    + +
    +
    + +

    ◆ isRepeated()

    + +
    +
    + + + + + + + +
    bool sf::Texture::isRepeated () const
    +
    + +

    Tell whether the texture is repeated or not.

    +
    Returns
    True if repeat mode is enabled, false if it is disabled
    +
    See also
    setRepeated
    + +
    +
    + +

    ◆ isSmooth()

    + +
    +
    + + + + + + + +
    bool sf::Texture::isSmooth () const
    +
    + +

    Tell whether the smooth filter is enabled or not.

    +
    Returns
    True if smoothing is enabled, false if it is disabled
    +
    See also
    setSmooth
    + +
    +
    + +

    ◆ isSrgb()

    + +
    +
    + + + + + + + +
    bool sf::Texture::isSrgb () const
    +
    + +

    Tell whether the texture source is converted from sRGB or not.

    +
    Returns
    True if the texture source is converted from sRGB, false if not
    +
    See also
    setSrgb
    + +
    +
    + +

    ◆ loadFromFile()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Texture::loadFromFile (const std::string & filename,
    const IntRectarea = IntRect() 
    )
    +
    + +

    Load the texture from a file on disk.

    +

    This function is a shortcut for the following code:

    sf::Image image;
    image.loadFromFile(filename);
    texture.loadFromImage(image, area);

    The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

    +

    The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

    +

    If this function fails, the texture is left unchanged.

    +
    Parameters
    + + + +
    filenamePath of the image file to load
    areaArea of the image to load
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromMemory, loadFromStream, loadFromImage
    + +
    +
    + +

    ◆ loadFromImage()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Texture::loadFromImage (const Imageimage,
    const IntRectarea = IntRect() 
    )
    +
    + +

    Load the texture from an image.

    +

    The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

    +

    The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

    +

    If this function fails, the texture is left unchanged.

    +
    Parameters
    + + + +
    imageImage to load into the texture
    areaArea of the image to load
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromFile, loadFromMemory
    + +
    +
    + +

    ◆ loadFromMemory()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::Texture::loadFromMemory (const void * data,
    std::size_t size,
    const IntRectarea = IntRect() 
    )
    +
    + +

    Load the texture from a file in memory.

    +

    This function is a shortcut for the following code:

    sf::Image image;
    image.loadFromMemory(data, size);
    texture.loadFromImage(image, area);

    The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

    +

    The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

    +

    If this function fails, the texture is left unchanged.

    +
    Parameters
    + + + + +
    dataPointer to the file data in memory
    sizeSize of the data to load, in bytes
    areaArea of the image to load
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromFile, loadFromStream, loadFromImage
    + +
    +
    + +

    ◆ loadFromStream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool sf::Texture::loadFromStream (InputStreamstream,
    const IntRectarea = IntRect() 
    )
    +
    + +

    Load the texture from a custom stream.

    +

    This function is a shortcut for the following code:

    sf::Image image;
    image.loadFromStream(stream);
    texture.loadFromImage(image, area);

    The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

    +

    The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

    +

    If this function fails, the texture is left unchanged.

    +
    Parameters
    + + + +
    streamSource stream to read from
    areaArea of the image to load
    +
    +
    +
    Returns
    True if loading was successful
    +
    See also
    loadFromFile, loadFromMemory, loadFromImage
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    Texture& sf::Texture::operator= (const Textureright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ setRepeated()

    + +
    +
    + + + + + + + + +
    void sf::Texture::setRepeated (bool repeated)
    +
    + +

    Enable or disable repeating.

    +

    Repeating is involved when using texture coordinates outside the texture rectangle [0, 0, width, height]. In this case, if repeat mode is enabled, the whole texture will be repeated as many times as needed to reach the coordinate (for example, if the X texture coordinate is 3 * width, the texture will be repeated 3 times). If repeat mode is disabled, the "extra space" will instead be filled with border pixels. Warning: on very old graphics cards, white pixels may appear when the texture is repeated. With such cards, repeat mode can be used reliably only if the texture has power-of-two dimensions (such as 256x128). Repeating is disabled by default.

    +
    Parameters
    + + +
    repeatedTrue to repeat the texture, false to disable repeating
    +
    +
    +
    See also
    isRepeated
    + +
    +
    + +

    ◆ setSmooth()

    + +
    +
    + + + + + + + + +
    void sf::Texture::setSmooth (bool smooth)
    +
    + +

    Enable or disable the smooth filter.

    +

    When the filter is activated, the texture appears smoother so that pixels are less noticeable. However if you want the texture to look exactly the same as its source file, you should leave it disabled. The smooth filter is disabled by default.

    +
    Parameters
    + + +
    smoothTrue to enable smoothing, false to disable it
    +
    +
    +
    See also
    isSmooth
    + +
    +
    + +

    ◆ setSrgb()

    + +
    +
    + + + + + + + + +
    void sf::Texture::setSrgb (bool sRgb)
    +
    + +

    Enable or disable conversion from sRGB.

    +

    When providing texture data from an image file or memory, it can either be stored in a linear color space or an sRGB color space. Most digital images account for gamma correction already, so they would need to be "uncorrected" back to linear color space before being processed by the hardware. The hardware can automatically convert it from the sRGB color space to a linear color space when it gets sampled. When the rendered image gets output to the final framebuffer, it gets converted back to sRGB.

    +

    After enabling or disabling sRGB conversion, make sure to reload the texture data in order for the setting to take effect.

    +

    This option is only useful in conjunction with an sRGB capable framebuffer. This can be requested during window creation.

    +
    Parameters
    + + +
    sRgbTrue to enable sRGB conversion, false to disable it
    +
    +
    +
    See also
    isSrgb
    + +
    +
    + +

    ◆ swap()

    + +
    +
    + + + + + + + + +
    void sf::Texture::swap (Textureright)
    +
    + +

    Swap the contents of this texture with those of another.

    +
    Parameters
    + + +
    rightInstance to swap with
    +
    +
    + +
    +
    + +

    ◆ update() [1/8]

    + +
    +
    + + + + + + + + +
    void sf::Texture::update (const Uint8 * pixels)
    +
    + +

    Update the whole texture from an array of pixels.

    +

    The pixel array is assumed to have the same size as the area rectangle, and to contain 32-bits RGBA pixels.

    +

    No additional check is performed on the size of the pixel array, passing invalid arguments will lead to an undefined behavior.

    +

    This function does nothing if pixels is null or if the texture was not previously created.

    +
    Parameters
    + + +
    pixelsArray of pixels to copy to the texture
    +
    +
    + +
    +
    + +

    ◆ update() [2/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Texture::update (const Uint8 * pixels,
    unsigned int width,
    unsigned int height,
    unsigned int x,
    unsigned int y 
    )
    +
    + +

    Update a part of the texture from an array of pixels.

    +

    The size of the pixel array must match the width and height arguments, and it must contain 32-bits RGBA pixels.

    +

    No additional check is performed on the size of the pixel array or the bounds of the area to update, passing invalid arguments will lead to an undefined behavior.

    +

    This function does nothing if pixels is null or if the texture was not previously created.

    +
    Parameters
    + + + + + + +
    pixelsArray of pixels to copy to the texture
    widthWidth of the pixel region contained in pixels
    heightHeight of the pixel region contained in pixels
    xX offset in the texture where to copy the source pixels
    yY offset in the texture where to copy the source pixels
    +
    +
    + +
    +
    + +

    ◆ update() [3/8]

    + +
    +
    + + + + + + + + +
    void sf::Texture::update (const Texturetexture)
    +
    + +

    Update a part of this texture from another texture.

    +

    Although the source texture can be smaller than this texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of this texture.

    +

    No additional check is performed on the size of the passed texture, passing a texture bigger than this texture will lead to an undefined behavior.

    +

    This function does nothing if either texture was not previously created.

    +
    Parameters
    + + +
    textureSource texture to copy to this texture
    +
    +
    + +
    +
    + +

    ◆ update() [4/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Texture::update (const Texturetexture,
    unsigned int x,
    unsigned int y 
    )
    +
    + +

    Update a part of this texture from another texture.

    +

    No additional check is performed on the size of the texture, passing an invalid combination of texture size and offset will lead to an undefined behavior.

    +

    This function does nothing if either texture was not previously created.

    +
    Parameters
    + + + + +
    textureSource texture to copy to this texture
    xX offset in this texture where to copy the source texture
    yY offset in this texture where to copy the source texture
    +
    +
    + +
    +
    + +

    ◆ update() [5/8]

    + +
    +
    + + + + + + + + +
    void sf::Texture::update (const Imageimage)
    +
    + +

    Update the texture from an image.

    +

    Although the source image can be smaller than the texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of the texture.

    +

    No additional check is performed on the size of the image, passing an image bigger than the texture will lead to an undefined behavior.

    +

    This function does nothing if the texture was not previously created.

    +
    Parameters
    + + +
    imageImage to copy to the texture
    +
    +
    + +
    +
    + +

    ◆ update() [6/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Texture::update (const Imageimage,
    unsigned int x,
    unsigned int y 
    )
    +
    + +

    Update a part of the texture from an image.

    +

    No additional check is performed on the size of the image, passing an invalid combination of image size and offset will lead to an undefined behavior.

    +

    This function does nothing if the texture was not previously created.

    +
    Parameters
    + + + + +
    imageImage to copy to the texture
    xX offset in the texture where to copy the source image
    yY offset in the texture where to copy the source image
    +
    +
    + +
    +
    + +

    ◆ update() [7/8]

    + +
    +
    + + + + + + + + +
    void sf::Texture::update (const Windowwindow)
    +
    + +

    Update the texture from the contents of a window.

    +

    Although the source window can be smaller than the texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of the texture.

    +

    No additional check is performed on the size of the window, passing a window bigger than the texture will lead to an undefined behavior.

    +

    This function does nothing if either the texture or the window was not previously created.

    +
    Parameters
    + + +
    windowWindow to copy to the texture
    +
    +
    + +
    +
    + +

    ◆ update() [8/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Texture::update (const Windowwindow,
    unsigned int x,
    unsigned int y 
    )
    +
    + +

    Update a part of the texture from the contents of a window.

    +

    No additional check is performed on the size of the window, passing an invalid combination of window size and offset will lead to an undefined behavior.

    +

    This function does nothing if either the texture or the window was not previously created.

    +
    Parameters
    + + + + +
    windowWindow to copy to the texture
    xX offset in the texture where to copy the source window
    yY offset in the texture where to copy the source window
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Texture.png b/SFML/doc/html/classsf_1_1Texture.png new file mode 100644 index 0000000000000000000000000000000000000000..91a912f4d87dd105c6ca4007a1c30b754838f4ad GIT binary patch literal 475 zcmV<10VMv3P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004MNkl!5JVq^_doOcVW2^AG&8+svm}&h`8>;_4?v7D`iUq>UK)5w>gbp8A((P~ znYC19UXre=!5he0F6>fD(mfUY;?J10MaHM~*E9WGQaN8R8DD%F#|^$(EidWIyQv0W zC6LXU?9K5#zMMY7Z+~3l8>8hj&9_>7=>&VVHj*8Fw|efrpM90imF$}hY*6BegN=i6SZ + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Thread Member List
    +
    +
    + +

    This is the complete list of members for sf::Thread, including all inherited members.

    + + + + + + + + + + +
    launch()sf::Thread
    NonCopyable()sf::NonCopyableinlineprivate
    terminate()sf::Thread
    Thread(F function)sf::Thread
    Thread(F function, A argument)sf::Thread
    Thread(void(C::*function)(), C *object)sf::Thread
    wait()sf::Thread
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~Thread()sf::Thread
    + + + + diff --git a/SFML/doc/html/classsf_1_1Thread.html b/SFML/doc/html/classsf_1_1Thread.html new file mode 100644 index 0000000..a6146dd --- /dev/null +++ b/SFML/doc/html/classsf_1_1Thread.html @@ -0,0 +1,316 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Thread Class Reference
    +
    +
    + +

    Utility class to manipulate threads. + More...

    + +

    #include <Thread.hpp>

    +
    +Inheritance diagram for sf::Thread:
    +
    +
    + + +sf::NonCopyable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    template<typename F >
     Thread (F function)
     Construct the thread from a functor with no argument. More...
     
    template<typename F , typename A >
     Thread (F function, A argument)
     Construct the thread from a functor with an argument. More...
     
    template<typename C >
     Thread (void(C::*function)(), C *object)
     Construct the thread from a member function and an object. More...
     
     ~Thread ()
     Destructor. More...
     
    void launch ()
     Run the thread. More...
     
    void wait ()
     Wait until the thread finishes. More...
     
    void terminate ()
     Terminate the thread. More...
     
    +

    Detailed Description

    +

    Utility class to manipulate threads.

    +

    Threads provide a way to run multiple parts of the code in parallel.

    +

    When you launch a new thread, the execution is split and both the new thread and the caller run in parallel.

    +

    To use a sf::Thread, you construct it directly with the function to execute as the entry point of the thread. sf::Thread has multiple template constructors, which means that you can use several types of entry points:

      +
    • non-member functions with no argument
    • +
    • non-member functions with one argument of any type
    • +
    • functors with no argument (this one is particularly useful for compatibility with boost/std::bind)
    • +
    • functors with one argument of any type
    • +
    • member functions from any class with no argument
    • +
    +

    The function argument, if any, is copied in the sf::Thread instance, as well as the functor (if the corresponding constructor is used). Class instances, however, are passed by pointer so you must make sure that the object won't be destroyed while the thread is still using it.

    +

    The thread ends when its function is terminated. If the owner sf::Thread instance is destroyed before the thread is finished, the destructor will wait (see wait())

    +

    Usage examples:

    // example 1: non member function with one argument
    void threadFunc(int argument)
    {
    ...
    }
    sf::Thread thread(&threadFunc, 5);
    thread.launch(); // start the thread (internally calls threadFunc(5))
    // example 2: member function
    class Task
    {
    public:
    void run()
    {
    ...
    }
    };
    Task task;
    sf::Thread thread(&Task::run, &task);
    thread.launch(); // start the thread (internally calls task.run())
    // example 3: functor
    struct Task
    {
    void operator()()
    {
    ...
    }
    };
    sf::Thread thread(Task());
    thread.launch(); // start the thread (internally calls operator() on the Task instance)

    Creating parallel threads of execution can be dangerous: all threads inside the same process share the same memory space, which means that you may end up accessing the same variable from multiple threads at the same time. To prevent this kind of situations, you can use mutexes (see sf::Mutex).

    +
    See also
    sf::Mutex
    + +

    Definition at line 48 of file Thread.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Thread() [1/3]

    + +
    +
    +
    +template<typename F >
    + + + + + + + + +
    sf::Thread::Thread (function)
    +
    + +

    Construct the thread from a functor with no argument.

    +

    This constructor works for function objects, as well as free functions.

    +

    Use this constructor for this kind of function:

    void function();
    // --- or ----
    struct Functor
    {
    void operator()();
    };

    Note: this does not run the thread, use launch().

    +
    Parameters
    + + +
    functionFunctor or free function to use as the entry point of the thread
    +
    +
    + +
    +
    + +

    ◆ Thread() [2/3]

    + +
    +
    +
    +template<typename F , typename A >
    + + + + + + + + + + + + + + + + + + +
    sf::Thread::Thread (function,
    argument 
    )
    +
    + +

    Construct the thread from a functor with an argument.

    +

    This constructor works for function objects, as well as free functions. It is a template, which means that the argument can have any type (int, std::string, void*, Toto, ...).

    +

    Use this constructor for this kind of function:

    void function(int arg);
    // --- or ----
    struct Functor
    {
    void operator()(std::string arg);
    };

    Note: this does not run the thread, use launch().

    +
    Parameters
    + + + +
    functionFunctor or free function to use as the entry point of the thread
    argumentargument to forward to the function
    +
    +
    + +
    +
    + +

    ◆ Thread() [3/3]

    + +
    +
    +
    +template<typename C >
    + + + + + + + + + + + + + + + + + + +
    sf::Thread::Thread (void(C::*)() function,
    C * object 
    )
    +
    + +

    Construct the thread from a member function and an object.

    +

    This constructor is a template, which means that you can use it with any class. Use this constructor for this kind of function:

    class MyClass
    {
    public:
    void function();
    };

    Note: this does not run the thread, use launch().

    +
    Parameters
    + + + +
    functionEntry point of the thread
    objectPointer to the object to use
    +
    +
    + +
    +
    + +

    ◆ ~Thread()

    + +
    +
    + + + + + + + +
    sf::Thread::~Thread ()
    +
    + +

    Destructor.

    +

    This destructor calls wait(), so that the internal thread cannot survive after its sf::Thread instance is destroyed.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ launch()

    + +
    +
    + + + + + + + +
    void sf::Thread::launch ()
    +
    + +

    Run the thread.

    +

    This function starts the entry point passed to the thread's constructor, and returns immediately. After this function returns, the thread's function is running in parallel to the calling code.

    + +
    +
    + +

    ◆ terminate()

    + +
    +
    + + + + + + + +
    void sf::Thread::terminate ()
    +
    + +

    Terminate the thread.

    +

    This function immediately stops the thread, without waiting for its function to finish. Terminating a thread with this function is not safe, and can lead to local variables not being destroyed on some operating systems. You should rather try to make the thread function terminate by itself.

    + +
    +
    + +

    ◆ wait()

    + +
    +
    + + + + + + + +
    void sf::Thread::wait ()
    +
    + +

    Wait until the thread finishes.

    +

    This function will block the execution until the thread's function ends. Warning: if the thread function never ends, the calling thread will block forever. If this function is called from its owner thread, it returns without doing anything.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Thread.png b/SFML/doc/html/classsf_1_1Thread.png new file mode 100644 index 0000000000000000000000000000000000000000..598a56137f314a99325b9729c1071934433ba59f GIT binary patch literal 501 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004mNkl>eg9{kqC(Ir8|^aJL+d9PVlD~k>0e@u(M3c_a?l`2Qm_7w6v8$! zcS+?6(?^mnw651~J5pI(!X0Ctm?f2~L7GFG?S|x-l#J8!X2`kK=BK_TVkXU;{6@OU zJPpMmZ@4x;^EI2ZqFG2=sij5P*qJyI@P;KP0+hYZP57Fkfd&X zC@IDmJp}M$Jpf$fMtVHFP;R6N2G8#Dn{0EJk0Pe4m6Ttm7ass%&Mos|t z*T`x6gb;#@2mlTmB!FJsi8M8h?a_w+`D&A7m(%<=NOLxG7JJfSN^h>qdFUg}ftKj& zu--Ofy|{Y!lFq8PR|N!kqE_`9q|_tJ_zJ0%?JB1-?Ix9TYE|#mb1K!VJHqB;dT-&p r@OuJyiv|gxSAzu5D_2qoA$aHu(FhgGjoy~F00000NkvXXu0mjfc&O#R literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1ThreadLocal-members.html b/SFML/doc/html/classsf_1_1ThreadLocal-members.html new file mode 100644 index 0000000..f8e3dcb --- /dev/null +++ b/SFML/doc/html/classsf_1_1ThreadLocal-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::ThreadLocal Member List
    +
    +
    + +

    This is the complete list of members for sf::ThreadLocal, including all inherited members.

    + + + + + + + +
    getValue() constsf::ThreadLocal
    NonCopyable()sf::NonCopyableinlineprivate
    setValue(void *value)sf::ThreadLocal
    ThreadLocal(void *value=NULL)sf::ThreadLocal
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~ThreadLocal()sf::ThreadLocal
    + + + + diff --git a/SFML/doc/html/classsf_1_1ThreadLocal.html b/SFML/doc/html/classsf_1_1ThreadLocal.html new file mode 100644 index 0000000..7fbd76e --- /dev/null +++ b/SFML/doc/html/classsf_1_1ThreadLocal.html @@ -0,0 +1,194 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::ThreadLocal Class Reference
    +
    +
    + +

    Defines variables with thread-local storage. + More...

    + +

    #include <ThreadLocal.hpp>

    +
    +Inheritance diagram for sf::ThreadLocal:
    +
    +
    + + +sf::NonCopyable +sf::ThreadLocalPtr< T > + +
    + + + + + + + + + + + + + + +

    +Public Member Functions

     ThreadLocal (void *value=NULL)
     Default constructor. More...
     
     ~ThreadLocal ()
     Destructor. More...
     
    void setValue (void *value)
     Set the thread-specific value of the variable. More...
     
    void * getValue () const
     Retrieve the thread-specific value of the variable. More...
     
    +

    Detailed Description

    +

    Defines variables with thread-local storage.

    +

    This class manipulates void* parameters and thus is not appropriate for strongly-typed variables.

    +

    You should rather use the sf::ThreadLocalPtr template class.

    + +

    Definition at line 47 of file ThreadLocal.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ThreadLocal()

    + +
    +
    + + + + + + + + +
    sf::ThreadLocal::ThreadLocal (void * value = NULL)
    +
    + +

    Default constructor.

    +
    Parameters
    + + +
    valueOptional value to initialize the variable
    +
    +
    + +
    +
    + +

    ◆ ~ThreadLocal()

    + +
    +
    + + + + + + + +
    sf::ThreadLocal::~ThreadLocal ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getValue()

    + +
    +
    + + + + + + + +
    void* sf::ThreadLocal::getValue () const
    +
    + +

    Retrieve the thread-specific value of the variable.

    +
    Returns
    Value of the variable for the current thread
    + +
    +
    + +

    ◆ setValue()

    + +
    +
    + + + + + + + + +
    void sf::ThreadLocal::setValue (void * value)
    +
    + +

    Set the thread-specific value of the variable.

    +
    Parameters
    + + +
    valueValue of the variable for the current thread
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1ThreadLocal.png b/SFML/doc/html/classsf_1_1ThreadLocal.png new file mode 100644 index 0000000000000000000000000000000000000000..02924d20b2fe006f6b45a825fb51ced4b28d4f07 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0vp^lYqE`gBeI#zi@H{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;dDDWo|AM~C#gj4YMyfG+RA@kR_jb^RbD#1 z-XmJZ|1u)==J!3XW+!?c|0;6nOn~HsQ(dm91-tIEm2JQEFmX-dOVvv}Tl8bsEsme1 zoUna?tlZIU`HG%vb(UOfF@7qrGP93;zJt}%RPTGSOO~GSTC~dXu|dSs*!Mqtm+boD zH)qlpH}mY3c9GAol8nIll1ui`2~TKD_mK`R-4(kB)d=V$TxN^t^vL zU#ZsZ%WMyMp}*_@m#Mzw7xkEwa#B6$oaJtz1IAU1KPK5Pxqe!9vi*|I6Vj8NRT#>- z`WbXuy&0w*Qf2UdDAcgDfb&4m4weMX7^V#(dW;cV(@~|L$9QR~#w#&a1StR|RT#X@ zCoW44koSMQF!P(%fg2y?f@Fh#{TIpnmi}$2dsN%0$FINKyW;Wp&YeF3nUS@zFAP>R zT+6+i)13W5gXO{8JcYg9G3zgGOYfMktjoE}O^bE^7Pd=*Ods6LPwkFQd2z|WU46-M zp>p<@`q?i%VxsSDb-r2{)i5o1N9t#hPbc0B9hk2ALSS|Qc-%}!KCSyAx?H*fIY_6nM-P+65!SAo0UwiFM_msN+g5E7Q_w=?j zLj7*Aq$soY{;RF4?_FFw@t*3s>zUuhR-TNC_5N+$_c~>Frf|AK?& + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::ThreadLocalPtr< T > Member List
    +
    +
    + +

    This is the complete list of members for sf::ThreadLocalPtr< T >, including all inherited members.

    + + + + + + + + + + + +
    getValue() constsf::ThreadLocalprivate
    operator T*() constsf::ThreadLocalPtr< T >
    operator*() constsf::ThreadLocalPtr< T >
    operator->() constsf::ThreadLocalPtr< T >
    operator=(T *value)sf::ThreadLocalPtr< T >
    operator=(const ThreadLocalPtr< T > &right)sf::ThreadLocalPtr< T >
    setValue(void *value)sf::ThreadLocalprivate
    ThreadLocal(void *value=NULL)sf::ThreadLocalprivate
    ThreadLocalPtr(T *value=NULL)sf::ThreadLocalPtr< T >
    ~ThreadLocal()sf::ThreadLocalprivate
    + + + + diff --git a/SFML/doc/html/classsf_1_1ThreadLocalPtr.html b/SFML/doc/html/classsf_1_1ThreadLocalPtr.html new file mode 100644 index 0000000..cd8d998 --- /dev/null +++ b/SFML/doc/html/classsf_1_1ThreadLocalPtr.html @@ -0,0 +1,277 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::ThreadLocalPtr< T > Class Template Reference
    +
    +
    + +

    Pointer to a thread-local variable. + More...

    + +

    #include <ThreadLocalPtr.hpp>

    +
    +Inheritance diagram for sf::ThreadLocalPtr< T >:
    +
    +
    + + +sf::ThreadLocal + +
    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ThreadLocalPtr (T *value=NULL)
     Default constructor. More...
     
    T & operator* () const
     Overload of unary operator *. More...
     
    T * operator-> () const
     Overload of operator -> More...
     
     operator T* () const
     Conversion operator to implicitly convert the pointer to its raw pointer type (T*) More...
     
    ThreadLocalPtr< T > & operator= (T *value)
     Assignment operator for a raw pointer parameter. More...
     
    ThreadLocalPtr< T > & operator= (const ThreadLocalPtr< T > &right)
     Assignment operator for a ThreadLocalPtr parameter. More...
     
    + + + + + + + +

    +Private Member Functions

    void setValue (void *value)
     Set the thread-specific value of the variable. More...
     
    void * getValue () const
     Retrieve the thread-specific value of the variable. More...
     
    +

    Detailed Description

    +

    template<typename T>
    +class sf::ThreadLocalPtr< T >

    + +

    Pointer to a thread-local variable.

    +

    sf::ThreadLocalPtr is a type-safe wrapper for storing pointers to thread-local variables.

    +

    A thread-local variable holds a different value for each different thread, unlike normal variables that are shared.

    +

    Its usage is completely transparent, so that it is similar to manipulating the raw pointer directly (like any smart pointer).

    +

    Usage example:

    MyClass object1;
    MyClass object2;
    void thread1()
    {
    objectPtr = &object1; // doesn't impact thread2
    ...
    }
    void thread2()
    {
    objectPtr = &object2; // doesn't impact thread1
    ...
    }
    int main()
    {
    // Create and launch the two threads
    sf::Thread t1(&thread1);
    sf::Thread t2(&thread2);
    t1.launch();
    t2.launch();
    return 0;
    }

    ThreadLocalPtr is designed for internal use; however you can use it if you feel like it fits well your implementation.

    + +

    Definition at line 41 of file ThreadLocalPtr.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ThreadLocalPtr()

    + +
    +
    +
    +template<typename T>
    + + + + + + + + +
    sf::ThreadLocalPtr< T >::ThreadLocalPtr (T * value = NULL)
    +
    + +

    Default constructor.

    +
    Parameters
    + + +
    valueOptional value to initialize the variable
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator T*()

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    sf::ThreadLocalPtr< T >::operator T* () const
    +
    + +

    Conversion operator to implicitly convert the pointer to its raw pointer type (T*)

    +
    Returns
    Pointer to the actual object
    + +
    +
    + +

    ◆ operator*()

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    T& sf::ThreadLocalPtr< T >::operator* () const
    +
    + +

    Overload of unary operator *.

    +

    Like raw pointers, applying the * operator returns a reference to the pointed-to object.

    +
    Returns
    Reference to the thread-local variable
    + +
    +
    + +

    ◆ operator->()

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    T* sf::ThreadLocalPtr< T >::operator-> () const
    +
    + +

    Overload of operator ->

    +

    Similarly to raw pointers, applying the -> operator returns the pointed-to object.

    +
    Returns
    Pointer to the thread-local variable
    + +
    +
    + +

    ◆ operator=() [1/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + +
    ThreadLocalPtr<T>& sf::ThreadLocalPtr< T >::operator= (T * value)
    +
    + +

    Assignment operator for a raw pointer parameter.

    +
    Parameters
    + + +
    valuePointer to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + +
    ThreadLocalPtr<T>& sf::ThreadLocalPtr< T >::operator= (const ThreadLocalPtr< T > & right)
    +
    + +

    Assignment operator for a ThreadLocalPtr parameter.

    +
    Parameters
    + + +
    rightThreadLocalPtr to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1ThreadLocalPtr.png b/SFML/doc/html/classsf_1_1ThreadLocalPtr.png new file mode 100644 index 0000000000000000000000000000000000000000..1796db78d3a8670a5d4e419c99ba84320482b416 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cBm#UwT>t<74`jZ0^R=}9&;%e0 zj1L?*z}k679?0b=3GxeO04f53tEWPY7#J9zc)B=-R4~4sdvV)h1s+%PDlZ60<1)_bhBU#)K&6nU!d>Ra20C3X3{@=8-*ZM~2fz_#^bTkb}+{vef?Ui=f* zNnOt_c_aC#c*&&&)k|zXs9Jfrcd5j_I9O5c+NQ@_UE=gB>hU~2vhTm~eh+APvtdqNOu3@__tQTG8D=;&0{u6E!G;y+UCW6 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Time Member List
    +
    +
    + +

    This is the complete list of members for sf::Time, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    asMicroseconds() constsf::Time
    asMilliseconds() constsf::Time
    asSeconds() constsf::Time
    microseconds (defined in sf::Time)sf::Timefriend
    microseconds(Int64 amount)sf::Timerelated
    milliseconds (defined in sf::Time)sf::Timefriend
    milliseconds(Int32 amount)sf::Timerelated
    operator!=(Time left, Time right)sf::Timerelated
    operator%(Time left, Time right)sf::Timerelated
    operator%=(Time &left, Time right)sf::Timerelated
    operator*(Time left, float right)sf::Timerelated
    operator*(Time left, Int64 right)sf::Timerelated
    operator*(float left, Time right)sf::Timerelated
    operator*(Int64 left, Time right)sf::Timerelated
    operator*=(Time &left, float right)sf::Timerelated
    operator*=(Time &left, Int64 right)sf::Timerelated
    operator+(Time left, Time right)sf::Timerelated
    operator+=(Time &left, Time right)sf::Timerelated
    operator-(Time right)sf::Timerelated
    operator-(Time left, Time right)sf::Timerelated
    operator-=(Time &left, Time right)sf::Timerelated
    operator/(Time left, float right)sf::Timerelated
    operator/(Time left, Int64 right)sf::Timerelated
    operator/(Time left, Time right)sf::Timerelated
    operator/=(Time &left, float right)sf::Timerelated
    operator/=(Time &left, Int64 right)sf::Timerelated
    operator<(Time left, Time right)sf::Timerelated
    operator<=(Time left, Time right)sf::Timerelated
    operator==(Time left, Time right)sf::Timerelated
    operator>(Time left, Time right)sf::Timerelated
    operator>=(Time left, Time right)sf::Timerelated
    seconds (defined in sf::Time)sf::Timefriend
    seconds(float amount)sf::Timerelated
    Time()sf::Time
    Zerosf::Timestatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1Time.html b/SFML/doc/html/classsf_1_1Time.html new file mode 100644 index 0000000..3485dcd --- /dev/null +++ b/SFML/doc/html/classsf_1_1Time.html @@ -0,0 +1,1516 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Represents a time value. + More...

    + +

    #include <Time.hpp>

    + + + + + + + + + + + + + + +

    +Public Member Functions

     Time ()
     Default constructor. More...
     
    float asSeconds () const
     Return the time value as a number of seconds. More...
     
    Int32 asMilliseconds () const
     Return the time value as a number of milliseconds. More...
     
    Int64 asMicroseconds () const
     Return the time value as a number of microseconds. More...
     
    + + + + +

    +Static Public Attributes

    static const Time Zero
     Predefined "zero" time value. More...
     
    + + + + + + + +

    +Friends

    +Time seconds (float)
     
    +Time milliseconds (Int32)
     
    +Time microseconds (Int64)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    Time seconds (float amount)
     Construct a time value from a number of seconds. More...
     
    Time milliseconds (Int32 amount)
     Construct a time value from a number of milliseconds. More...
     
    Time microseconds (Int64 amount)
     Construct a time value from a number of microseconds. More...
     
    bool operator== (Time left, Time right)
     Overload of == operator to compare two time values. More...
     
    bool operator!= (Time left, Time right)
     Overload of != operator to compare two time values. More...
     
    bool operator< (Time left, Time right)
     Overload of < operator to compare two time values. More...
     
    bool operator> (Time left, Time right)
     Overload of > operator to compare two time values. More...
     
    bool operator<= (Time left, Time right)
     Overload of <= operator to compare two time values. More...
     
    bool operator>= (Time left, Time right)
     Overload of >= operator to compare two time values. More...
     
    Time operator- (Time right)
     Overload of unary - operator to negate a time value. More...
     
    Time operator+ (Time left, Time right)
     Overload of binary + operator to add two time values. More...
     
    Timeoperator+= (Time &left, Time right)
     Overload of binary += operator to add/assign two time values. More...
     
    Time operator- (Time left, Time right)
     Overload of binary - operator to subtract two time values. More...
     
    Timeoperator-= (Time &left, Time right)
     Overload of binary -= operator to subtract/assign two time values. More...
     
    Time operator* (Time left, float right)
     Overload of binary * operator to scale a time value. More...
     
    Time operator* (Time left, Int64 right)
     Overload of binary * operator to scale a time value. More...
     
    Time operator* (float left, Time right)
     Overload of binary * operator to scale a time value. More...
     
    Time operator* (Int64 left, Time right)
     Overload of binary * operator to scale a time value. More...
     
    Timeoperator*= (Time &left, float right)
     Overload of binary *= operator to scale/assign a time value. More...
     
    Timeoperator*= (Time &left, Int64 right)
     Overload of binary *= operator to scale/assign a time value. More...
     
    Time operator/ (Time left, float right)
     Overload of binary / operator to scale a time value. More...
     
    Time operator/ (Time left, Int64 right)
     Overload of binary / operator to scale a time value. More...
     
    Timeoperator/= (Time &left, float right)
     Overload of binary /= operator to scale/assign a time value. More...
     
    Timeoperator/= (Time &left, Int64 right)
     Overload of binary /= operator to scale/assign a time value. More...
     
    float operator/ (Time left, Time right)
     Overload of binary / operator to compute the ratio of two time values. More...
     
    Time operator% (Time left, Time right)
     Overload of binary % operator to compute remainder of a time value. More...
     
    Timeoperator%= (Time &left, Time right)
     Overload of binary %= operator to compute/assign remainder of a time value. More...
     
    +

    Detailed Description

    +

    Represents a time value.

    +

    sf::Time encapsulates a time value in a flexible way.

    +

    It allows to define a time value either as a number of seconds, milliseconds or microseconds. It also works the other way round: you can read a time value as either a number of seconds, milliseconds or microseconds.

    +

    By using such a flexible interface, the API doesn't impose any fixed type or resolution for time values, and let the user choose its own favorite representation.

    +

    Time values support the usual mathematical operations: you can add or subtract two times, multiply or divide a time by a number, compare two times, etc.

    +

    Since they represent a time span and not an absolute time value, times can also be negative.

    +

    Usage example:

    sf::Time t1 = sf::seconds(0.1f);
    Int32 milli = t1.asMilliseconds(); // 100
    sf::Time t2 = sf::milliseconds(30);
    Int64 micro = t2.asMicroseconds(); // 30000
    sf::Time t3 = sf::microseconds(-800000);
    float sec = t3.asSeconds(); // -0.8
    void update(sf::Time elapsed)
    {
    position += speed * elapsed.asSeconds();
    }
    update(sf::milliseconds(100));
    See also
    sf::Clock
    + +

    Definition at line 40 of file Time.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Time()

    + +
    +
    + + + + + + + +
    sf::Time::Time ()
    +
    + +

    Default constructor.

    +

    Sets the time value to zero.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ asMicroseconds()

    + +
    +
    + + + + + + + +
    Int64 sf::Time::asMicroseconds () const
    +
    + +

    Return the time value as a number of microseconds.

    +
    Returns
    Time in microseconds
    +
    See also
    asSeconds, asMilliseconds
    + +
    +
    + +

    ◆ asMilliseconds()

    + +
    +
    + + + + + + + +
    Int32 sf::Time::asMilliseconds () const
    +
    + +

    Return the time value as a number of milliseconds.

    +
    Returns
    Time in milliseconds
    +
    See also
    asSeconds, asMicroseconds
    + +
    +
    + +

    ◆ asSeconds()

    + +
    +
    + + + + + + + +
    float sf::Time::asSeconds () const
    +
    + +

    Return the time value as a number of seconds.

    +
    Returns
    Time in seconds
    +
    See also
    asMilliseconds, asMicroseconds
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ microseconds()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Time microseconds (Int64 amount)
    +
    +related
    +
    + +

    Construct a time value from a number of microseconds.

    +
    Parameters
    + + +
    amountNumber of microseconds
    +
    +
    +
    Returns
    Time value constructed from the amount of microseconds
    +
    See also
    seconds, milliseconds
    + +
    +
    + +

    ◆ milliseconds()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Time milliseconds (Int32 amount)
    +
    +related
    +
    + +

    Construct a time value from a number of milliseconds.

    +
    Parameters
    + + +
    amountNumber of milliseconds
    +
    +
    +
    Returns
    Time value constructed from the amount of milliseconds
    +
    See also
    seconds, microseconds
    + +
    +
    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of != operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if both time values are different
    + +
    +
    + +

    ◆ operator%()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator% (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary % operator to compute remainder of a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    left modulo right
    + +
    +
    + +

    ◆ operator%=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator%= (Timeleft,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary %= operator to compute/assign remainder of a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    left modulo right
    + +
    +
    + +

    ◆ operator*() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator* (Time left,
    float right 
    )
    +
    +related
    +
    + +

    Overload of binary * operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator*() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator* (Time left,
    Int64 right 
    )
    +
    +related
    +
    + +

    Overload of binary * operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator*() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator* (float left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary * operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a number)
    rightRight operand (a time)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator*() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator* (Int64 left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary * operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a number)
    rightRight operand (a time)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator*=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator*= (Timeleft,
    float right 
    )
    +
    +related
    +
    + +

    Overload of binary *= operator to scale/assign a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator*=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator*= (Timeleft,
    Int64 right 
    )
    +
    +related
    +
    + +

    Overload of binary *= operator to scale/assign a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left multiplied by right
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator+ (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary + operator to add two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    Sum of the two times values
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator+= (Timeleft,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary += operator to add/assign two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    Sum of the two times values
    + +
    +
    + +

    ◆ operator-() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Time operator- (Time right)
    +
    +related
    +
    + +

    Overload of unary - operator to negate a time value.

    +
    Parameters
    + + +
    rightRight operand (a time)
    +
    +
    +
    Returns
    Opposite of the time value
    + +
    +
    + +

    ◆ operator-() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator- (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary - operator to subtract two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    Difference of the two times values
    + +
    +
    + +

    ◆ operator-=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator-= (Timeleft,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary -= operator to subtract/assign two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    Difference of the two times values
    + +
    +
    + +

    ◆ operator/() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator/ (Time left,
    float right 
    )
    +
    +related
    +
    + +

    Overload of binary / operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left divided by right
    + +
    +
    + +

    ◆ operator/() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time operator/ (Time left,
    Int64 right 
    )
    +
    +related
    +
    + +

    Overload of binary / operator to scale a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left divided by right
    + +
    +
    + +

    ◆ operator/() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    float operator/ (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of binary / operator to compute the ratio of two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    left divided by right
    + +
    +
    + +

    ◆ operator/=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator/= (Timeleft,
    float right 
    )
    +
    +related
    +
    + +

    Overload of binary /= operator to scale/assign a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left divided by right
    + +
    +
    + +

    ◆ operator/=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Time & operator/= (Timeleft,
    Int64 right 
    )
    +
    +related
    +
    + +

    Overload of binary /= operator to scale/assign a time value.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a number)
    +
    +
    +
    Returns
    left divided by right
    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator< (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of < operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if left is lesser than right
    + +
    +
    + +

    ◆ operator<=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator<= (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of <= operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if left is lesser or equal than right
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of == operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if both time values are equal
    + +
    +
    + +

    ◆ operator>()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator> (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of > operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if left is greater than right
    + +
    +
    + +

    ◆ operator>=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator>= (Time left,
    Time right 
    )
    +
    +related
    +
    + +

    Overload of >= operator to compare two time values.

    +
    Parameters
    + + + +
    leftLeft operand (a time)
    rightRight operand (a time)
    +
    +
    +
    Returns
    True if left is greater or equal than right
    + +
    +
    + +

    ◆ seconds()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Time seconds (float amount)
    +
    +related
    +
    + +

    Construct a time value from a number of seconds.

    +
    Parameters
    + + +
    amountNumber of seconds
    +
    +
    +
    Returns
    Time value constructed from the amount of seconds
    +
    See also
    milliseconds, microseconds
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ Zero

    + +
    +
    + + + + + +
    + + + + +
    const Time sf::Time::Zero
    +
    +static
    +
    + +

    Predefined "zero" time value.

    + +

    Definition at line 85 of file Time.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Touch-members.html b/SFML/doc/html/classsf_1_1Touch-members.html new file mode 100644 index 0000000..c42353d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Touch-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Touch Member List
    +
    +
    + +

    This is the complete list of members for sf::Touch, including all inherited members.

    + + + + +
    getPosition(unsigned int finger)sf::Touchstatic
    getPosition(unsigned int finger, const Window &relativeTo)sf::Touchstatic
    isDown(unsigned int finger)sf::Touchstatic
    + + + + diff --git a/SFML/doc/html/classsf_1_1Touch.html b/SFML/doc/html/classsf_1_1Touch.html new file mode 100644 index 0000000..a359018 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Touch.html @@ -0,0 +1,211 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Give access to the real-time state of the touches. + More...

    + +

    #include <Touch.hpp>

    + + + + + + + + + + + +

    +Static Public Member Functions

    static bool isDown (unsigned int finger)
     Check if a touch event is currently down. More...
     
    static Vector2i getPosition (unsigned int finger)
     Get the current position of a touch in desktop coordinates. More...
     
    static Vector2i getPosition (unsigned int finger, const Window &relativeTo)
     Get the current position of a touch in window coordinates. More...
     
    +

    Detailed Description

    +

    Give access to the real-time state of the touches.

    +

    sf::Touch provides an interface to the state of the touches.

    +

    It only contains static functions, so it's not meant to be instantiated.

    +

    This class allows users to query the touches state at any time and directly, without having to deal with a window and its events. Compared to the TouchBegan, TouchMoved and TouchEnded events, sf::Touch can retrieve the state of the touches at any time (you don't need to store and update a boolean on your side in order to know if a touch is down), and you always get the real state of the touches, even if they happen when your window is out of focus and no event is triggered.

    +

    The getPosition function can be used to retrieve the current position of a touch. There are two versions: one that operates in global coordinates (relative to the desktop) and one that operates in window coordinates (relative to a specific window).

    +

    Touches are identified by an index (the "finger"), so that in multi-touch events, individual touches can be tracked correctly. As long as a finger touches the screen, it will keep the same index even if other fingers start or stop touching the screen in the meantime. As a consequence, active touch indices may not always be sequential (i.e. touch number 0 may be released while touch number 1 is still down).

    +

    Usage example:

    {
    // touch 0 is down
    }
    // get global position of touch 1
    // get position of touch 1 relative to a window
    sf::Vector2i relativePos = sf::Touch::getPosition(1, window);
    See also
    sf::Joystick, sf::Keyboard, sf::Mouse
    + +

    Definition at line 43 of file Touch.hpp.

    +

    Member Function Documentation

    + +

    ◆ getPosition() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    static Vector2i sf::Touch::getPosition (unsigned int finger)
    +
    +static
    +
    + +

    Get the current position of a touch in desktop coordinates.

    +

    This function returns the current touch position in global (desktop) coordinates.

    +
    Parameters
    + + +
    fingerFinger index
    +
    +
    +
    Returns
    Current position of finger, or undefined if it's not down
    + +
    +
    + +

    ◆ getPosition() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static Vector2i sf::Touch::getPosition (unsigned int finger,
    const WindowrelativeTo 
    )
    +
    +static
    +
    + +

    Get the current position of a touch in window coordinates.

    +

    This function returns the current touch position relative to the given window.

    +
    Parameters
    + + + +
    fingerFinger index
    relativeToReference window
    +
    +
    +
    Returns
    Current position of finger, or undefined if it's not down
    + +
    +
    + +

    ◆ isDown()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static bool sf::Touch::isDown (unsigned int finger)
    +
    +static
    +
    + +

    Check if a touch event is currently down.

    +
    Parameters
    + + +
    fingerFinger index
    +
    +
    +
    Returns
    True if finger is currently touching the screen, false otherwise
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Transform-members.html b/SFML/doc/html/classsf_1_1Transform-members.html new file mode 100644 index 0000000..97d5714 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Transform-members.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Transform Member List
    +
    +
    + +

    This is the complete list of members for sf::Transform, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    combine(const Transform &transform)sf::Transform
    getInverse() constsf::Transform
    getMatrix() constsf::Transform
    Identitysf::Transformstatic
    operator!=(const Transform &left, const Transform &right)sf::Transformrelated
    operator*(const Transform &left, const Transform &right)sf::Transformrelated
    operator*(const Transform &left, const Vector2f &right)sf::Transformrelated
    operator*=(Transform &left, const Transform &right)sf::Transformrelated
    operator==(const Transform &left, const Transform &right)sf::Transformrelated
    rotate(float angle)sf::Transform
    rotate(float angle, float centerX, float centerY)sf::Transform
    rotate(float angle, const Vector2f &center)sf::Transform
    scale(float scaleX, float scaleY)sf::Transform
    scale(float scaleX, float scaleY, float centerX, float centerY)sf::Transform
    scale(const Vector2f &factors)sf::Transform
    scale(const Vector2f &factors, const Vector2f &center)sf::Transform
    Transform()sf::Transform
    Transform(float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)sf::Transform
    transformPoint(float x, float y) constsf::Transform
    transformPoint(const Vector2f &point) constsf::Transform
    transformRect(const FloatRect &rectangle) constsf::Transform
    translate(float x, float y)sf::Transform
    translate(const Vector2f &offset)sf::Transform
    + + + + diff --git a/SFML/doc/html/classsf_1_1Transform.html b/SFML/doc/html/classsf_1_1Transform.html new file mode 100644 index 0000000..543f64d --- /dev/null +++ b/SFML/doc/html/classsf_1_1Transform.html @@ -0,0 +1,1038 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Define a 3x3 transform matrix. + More...

    + +

    #include <Transform.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Transform ()
     Default constructor. More...
     
     Transform (float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)
     Construct a transform from a 3x3 matrix. More...
     
    const float * getMatrix () const
     Return the transform as a 4x4 matrix. More...
     
    Transform getInverse () const
     Return the inverse of the transform. More...
     
    Vector2f transformPoint (float x, float y) const
     Transform a 2D point. More...
     
    Vector2f transformPoint (const Vector2f &point) const
     Transform a 2D point. More...
     
    FloatRect transformRect (const FloatRect &rectangle) const
     Transform a rectangle. More...
     
    Transformcombine (const Transform &transform)
     Combine the current transform with another one. More...
     
    Transformtranslate (float x, float y)
     Combine the current transform with a translation. More...
     
    Transformtranslate (const Vector2f &offset)
     Combine the current transform with a translation. More...
     
    Transformrotate (float angle)
     Combine the current transform with a rotation. More...
     
    Transformrotate (float angle, float centerX, float centerY)
     Combine the current transform with a rotation. More...
     
    Transformrotate (float angle, const Vector2f &center)
     Combine the current transform with a rotation. More...
     
    Transformscale (float scaleX, float scaleY)
     Combine the current transform with a scaling. More...
     
    Transformscale (float scaleX, float scaleY, float centerX, float centerY)
     Combine the current transform with a scaling. More...
     
    Transformscale (const Vector2f &factors)
     Combine the current transform with a scaling. More...
     
    Transformscale (const Vector2f &factors, const Vector2f &center)
     Combine the current transform with a scaling. More...
     
    + + + + +

    +Static Public Attributes

    static const Transform Identity
     The identity transform (does nothing) More...
     
    + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    Transform operator* (const Transform &left, const Transform &right)
     Overload of binary operator * to combine two transforms. More...
     
    Transformoperator*= (Transform &left, const Transform &right)
     Overload of binary operator *= to combine two transforms. More...
     
    Vector2f operator* (const Transform &left, const Vector2f &right)
     Overload of binary operator * to transform a point. More...
     
    bool operator== (const Transform &left, const Transform &right)
     Overload of binary operator == to compare two transforms. More...
     
    bool operator!= (const Transform &left, const Transform &right)
     Overload of binary operator != to compare two transforms. More...
     
    +

    Detailed Description

    +

    Define a 3x3 transform matrix.

    +

    A sf::Transform specifies how to translate, rotate, scale, shear, project, whatever things.

    +

    In mathematical terms, it defines how to transform a coordinate system into another.

    +

    For example, if you apply a rotation transform to a sprite, the result will be a rotated sprite. And anything that is transformed by this rotation transform will be rotated the same way, according to its initial position.

    +

    Transforms are typically used for drawing. But they can also be used for any computation that requires to transform points between the local and global coordinate systems of an entity (like collision detection).

    +

    Example:

    // define a translation transform
    sf::Transform translation;
    translation.translate(20, 50);
    // define a rotation transform
    sf::Transform rotation;
    rotation.rotate(45);
    // combine them
    sf::Transform transform = translation * rotation;
    // use the result to transform stuff...
    sf::Vector2f point = transform.transformPoint(10, 20);
    sf::FloatRect rect = transform.transformRect(sf::FloatRect(0, 0, 10, 100));
    See also
    sf::Transformable, sf::RenderStates
    + +

    Definition at line 42 of file Transform.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Transform() [1/2]

    + +
    +
    + + + + + + + +
    sf::Transform::Transform ()
    +
    + +

    Default constructor.

    +

    Creates an identity transform (a transform that does nothing).

    + +
    +
    + +

    ◆ Transform() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Transform::Transform (float a00,
    float a01,
    float a02,
    float a10,
    float a11,
    float a12,
    float a20,
    float a21,
    float a22 
    )
    +
    + +

    Construct a transform from a 3x3 matrix.

    +
    Parameters
    + + + + + + + + + + +
    a00Element (0, 0) of the matrix
    a01Element (0, 1) of the matrix
    a02Element (0, 2) of the matrix
    a10Element (1, 0) of the matrix
    a11Element (1, 1) of the matrix
    a12Element (1, 2) of the matrix
    a20Element (2, 0) of the matrix
    a21Element (2, 1) of the matrix
    a22Element (2, 2) of the matrix
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ combine()

    + +
    +
    + + + + + + + + +
    Transform& sf::Transform::combine (const Transformtransform)
    +
    + +

    Combine the current transform with another one.

    +

    The result is a transform that is equivalent to applying *this followed by transform. Mathematically, it is equivalent to a matrix multiplication.

    +
    Parameters
    + + +
    transformTransform to combine with this transform
    +
    +
    +
    Returns
    Reference to *this
    + +
    +
    + +

    ◆ getInverse()

    + +
    +
    + + + + + + + +
    Transform sf::Transform::getInverse () const
    +
    + +

    Return the inverse of the transform.

    +

    If the inverse cannot be computed, an identity transform is returned.

    +
    Returns
    A new transform which is the inverse of self
    + +
    +
    + +

    ◆ getMatrix()

    + +
    +
    + + + + + + + +
    const float* sf::Transform::getMatrix () const
    +
    + +

    Return the transform as a 4x4 matrix.

    +

    This function returns a pointer to an array of 16 floats containing the transform elements as a 4x4 matrix, which is directly compatible with OpenGL functions.

    +
    sf::Transform transform = ...;
    glLoadMatrixf(transform.getMatrix());
    Returns
    Pointer to a 4x4 matrix
    + +
    +
    + +

    ◆ rotate() [1/3]

    + +
    +
    + + + + + + + + +
    Transform& sf::Transform::rotate (float angle)
    +
    + +

    Combine the current transform with a rotation.

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.rotate(90).translate(50, 20);
    Parameters
    + + +
    angleRotation angle, in degrees
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, scale
    + +
    +
    + +

    ◆ rotate() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::rotate (float angle,
    float centerX,
    float centerY 
    )
    +
    + +

    Combine the current transform with a rotation.

    +

    The center of rotation is provided for convenience as a second argument, so that you can build rotations around arbitrary points more easily (and efficiently) than the usual translate(-center).rotate(angle).translate(center).

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.rotate(90, 8, 3).translate(50, 20);
    Parameters
    + + + + +
    angleRotation angle, in degrees
    centerXX coordinate of the center of rotation
    centerYY coordinate of the center of rotation
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, scale
    + +
    +
    + +

    ◆ rotate() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::rotate (float angle,
    const Vector2fcenter 
    )
    +
    + +

    Combine the current transform with a rotation.

    +

    The center of rotation is provided for convenience as a second argument, so that you can build rotations around arbitrary points more easily (and efficiently) than the usual translate(-center).rotate(angle).translate(center).

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.rotate(90, sf::Vector2f(8, 3)).translate(sf::Vector2f(50, 20));
    Parameters
    + + + +
    angleRotation angle, in degrees
    centerCenter of rotation
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, scale
    + +
    +
    + +

    ◆ scale() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::scale (float scaleX,
    float scaleY 
    )
    +
    + +

    Combine the current transform with a scaling.

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.scale(2, 1).rotate(45);
    Parameters
    + + + +
    scaleXScaling factor on the X axis
    scaleYScaling factor on the Y axis
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, rotate
    + +
    +
    + +

    ◆ scale() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::scale (float scaleX,
    float scaleY,
    float centerX,
    float centerY 
    )
    +
    + +

    Combine the current transform with a scaling.

    +

    The center of scaling is provided for convenience as a second argument, so that you can build scaling around arbitrary points more easily (and efficiently) than the usual translate(-center).scale(factors).translate(center).

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.scale(2, 1, 8, 3).rotate(45);
    Parameters
    + + + + + +
    scaleXScaling factor on X axis
    scaleYScaling factor on Y axis
    centerXX coordinate of the center of scaling
    centerYY coordinate of the center of scaling
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, rotate
    + +
    +
    + +

    ◆ scale() [3/4]

    + +
    +
    + + + + + + + + +
    Transform& sf::Transform::scale (const Vector2ffactors)
    +
    + +

    Combine the current transform with a scaling.

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.scale(sf::Vector2f(2, 1)).rotate(45);
    Parameters
    + + +
    factorsScaling factors
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, rotate
    + +
    +
    + +

    ◆ scale() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::scale (const Vector2ffactors,
    const Vector2fcenter 
    )
    +
    + +

    Combine the current transform with a scaling.

    +

    The center of scaling is provided for convenience as a second argument, so that you can build scaling around arbitrary points more easily (and efficiently) than the usual translate(-center).scale(factors).translate(center).

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.scale(sf::Vector2f(2, 1), sf::Vector2f(8, 3)).rotate(45);
    Parameters
    + + + +
    factorsScaling factors
    centerCenter of scaling
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    translate, rotate
    + +
    +
    + +

    ◆ transformPoint() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2f sf::Transform::transformPoint (float x,
    float y 
    ) const
    +
    + +

    Transform a 2D point.

    +
    Parameters
    + + + +
    xX coordinate of the point to transform
    yY coordinate of the point to transform
    +
    +
    +
    Returns
    Transformed point
    + +
    +
    + +

    ◆ transformPoint() [2/2]

    + +
    +
    + + + + + + + + +
    Vector2f sf::Transform::transformPoint (const Vector2fpoint) const
    +
    + +

    Transform a 2D point.

    +
    Parameters
    + + +
    pointPoint to transform
    +
    +
    +
    Returns
    Transformed point
    + +
    +
    + +

    ◆ transformRect()

    + +
    +
    + + + + + + + + +
    FloatRect sf::Transform::transformRect (const FloatRectrectangle) const
    +
    + +

    Transform a rectangle.

    +

    Since SFML doesn't provide support for oriented rectangles, the result of this function is always an axis-aligned rectangle. Which means that if the transform contains a rotation, the bounding rectangle of the transformed rectangle is returned.

    +
    Parameters
    + + +
    rectangleRectangle to transform
    +
    +
    +
    Returns
    Transformed rectangle
    + +
    +
    + +

    ◆ translate() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Transform& sf::Transform::translate (float x,
    float y 
    )
    +
    + +

    Combine the current transform with a translation.

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.translate(100, 200).rotate(45);
    Parameters
    + + + +
    xOffset to apply on X axis
    yOffset to apply on Y axis
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    rotate, scale
    + +
    +
    + +

    ◆ translate() [2/2]

    + +
    +
    + + + + + + + + +
    Transform& sf::Transform::translate (const Vector2foffset)
    +
    + +

    Combine the current transform with a translation.

    +

    This function returns a reference to *this, so that calls can be chained.

    sf::Transform transform;
    transform.translate(sf::Vector2f(100, 200)).rotate(45);
    Parameters
    + + +
    offsetTranslation offset to apply
    +
    +
    +
    Returns
    Reference to *this
    +
    See also
    rotate, scale
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Transformleft,
    const Transformright 
    )
    +
    +related
    +
    + +

    Overload of binary operator != to compare two transforms.

    +

    This call is equivalent to !(left == right).

    +
    Parameters
    + + + +
    leftLeft operand (the first transform)
    rightRight operand (the second transform)
    +
    +
    +
    Returns
    true if the transforms are not equal, false otherwise
    + +
    +
    + +

    ◆ operator*() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Transform operator* (const Transformleft,
    const Transformright 
    )
    +
    +related
    +
    + +

    Overload of binary operator * to combine two transforms.

    +

    This call is equivalent to calling Transform(left).combine(right).

    +
    Parameters
    + + + +
    leftLeft operand (the first transform)
    rightRight operand (the second transform)
    +
    +
    +
    Returns
    New combined transform
    + +
    +
    + +

    ◆ operator*() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2f operator* (const Transformleft,
    const Vector2fright 
    )
    +
    +related
    +
    + +

    Overload of binary operator * to transform a point.

    +

    This call is equivalent to calling left.transformPoint(right).

    +
    Parameters
    + + + +
    leftLeft operand (the transform)
    rightRight operand (the point to transform)
    +
    +
    +
    Returns
    New transformed point
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Transform & operator*= (Transformleft,
    const Transformright 
    )
    +
    +related
    +
    + +

    Overload of binary operator *= to combine two transforms.

    +

    This call is equivalent to calling left.combine(right).

    +
    Parameters
    + + + +
    leftLeft operand (the first transform)
    rightRight operand (the second transform)
    +
    +
    +
    Returns
    The combined transform
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Transformleft,
    const Transformright 
    )
    +
    +related
    +
    + +

    Overload of binary operator == to compare two transforms.

    +

    Performs an element-wise comparison of the elements of the left transform with the elements of the right transform.

    +
    Parameters
    + + + +
    leftLeft operand (the first transform)
    rightRight operand (the second transform)
    +
    +
    +
    Returns
    true if the transforms are equal, false otherwise
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ Identity

    + +
    +
    + + + + + +
    + + + + +
    const Transform sf::Transform::Identity
    +
    +static
    +
    + +

    The identity transform (does nothing)

    + +

    Definition at line 354 of file Transform.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Transformable-members.html b/SFML/doc/html/classsf_1_1Transformable-members.html new file mode 100644 index 0000000..95b1988 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Transformable-members.html @@ -0,0 +1,81 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Transformable Member List
    +
    +
    + +

    This is the complete list of members for sf::Transformable, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    getInverseTransform() constsf::Transformable
    getOrigin() constsf::Transformable
    getPosition() constsf::Transformable
    getRotation() constsf::Transformable
    getScale() constsf::Transformable
    getTransform() constsf::Transformable
    move(float offsetX, float offsetY)sf::Transformable
    move(const Vector2f &offset)sf::Transformable
    rotate(float angle)sf::Transformable
    scale(float factorX, float factorY)sf::Transformable
    scale(const Vector2f &factor)sf::Transformable
    setOrigin(float x, float y)sf::Transformable
    setOrigin(const Vector2f &origin)sf::Transformable
    setPosition(float x, float y)sf::Transformable
    setPosition(const Vector2f &position)sf::Transformable
    setRotation(float angle)sf::Transformable
    setScale(float factorX, float factorY)sf::Transformable
    setScale(const Vector2f &factors)sf::Transformable
    Transformable()sf::Transformable
    ~Transformable()sf::Transformablevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Transformable.html b/SFML/doc/html/classsf_1_1Transformable.html new file mode 100644 index 0000000..8aa8492 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Transformable.html @@ -0,0 +1,723 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Transformable Class Reference
    +
    +
    + +

    Decomposed transform defined by a position, a rotation and a scale. + More...

    + +

    #include <Transformable.hpp>

    +
    +Inheritance diagram for sf::Transformable:
    +
    +
    + + +sf::Shape +sf::Sprite +sf::Text +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Transformable ()
     Default constructor. More...
     
    virtual ~Transformable ()
     Virtual destructor. More...
     
    void setPosition (float x, float y)
     set the position of the object More...
     
    void setPosition (const Vector2f &position)
     set the position of the object More...
     
    void setRotation (float angle)
     set the orientation of the object More...
     
    void setScale (float factorX, float factorY)
     set the scale factors of the object More...
     
    void setScale (const Vector2f &factors)
     set the scale factors of the object More...
     
    void setOrigin (float x, float y)
     set the local origin of the object More...
     
    void setOrigin (const Vector2f &origin)
     set the local origin of the object More...
     
    const Vector2fgetPosition () const
     get the position of the object More...
     
    float getRotation () const
     get the orientation of the object More...
     
    const Vector2fgetScale () const
     get the current scale of the object More...
     
    const Vector2fgetOrigin () const
     get the local origin of the object More...
     
    void move (float offsetX, float offsetY)
     Move the object by a given offset. More...
     
    void move (const Vector2f &offset)
     Move the object by a given offset. More...
     
    void rotate (float angle)
     Rotate the object. More...
     
    void scale (float factorX, float factorY)
     Scale the object. More...
     
    void scale (const Vector2f &factor)
     Scale the object. More...
     
    const TransformgetTransform () const
     get the combined transform of the object More...
     
    const TransformgetInverseTransform () const
     get the inverse of the combined transform of the object More...
     
    +

    Detailed Description

    +

    Decomposed transform defined by a position, a rotation and a scale.

    +

    This class is provided for convenience, on top of sf::Transform.

    +

    sf::Transform, as a low-level class, offers a great level of flexibility but it is not always convenient to manage. Indeed, one can easily combine any kind of operation, such as a translation followed by a rotation followed by a scaling, but once the result transform is built, there's no way to go backward and, let's say, change only the rotation without modifying the translation and scaling. The entire transform must be recomputed, which means that you need to retrieve the initial translation and scale factors as well, and combine them the same way you did before updating the rotation. This is a tedious operation, and it requires to store all the individual components of the final transform.

    +

    That's exactly what sf::Transformable was written for: it hides these variables and the composed transform behind an easy to use interface. You can set or get any of the individual components without worrying about the others. It also provides the composed transform (as a sf::Transform), and keeps it up-to-date.

    +

    In addition to the position, rotation and scale, sf::Transformable provides an "origin" component, which represents the local origin of the three other components. Let's take an example with a 10x10 pixels sprite. By default, the sprite is positioned/rotated/scaled relatively to its top-left corner, because it is the local point (0, 0). But if we change the origin to be (5, 5), the sprite will be positioned/rotated/scaled around its center instead. And if we set the origin to (10, 10), it will be transformed around its bottom-right corner.

    +

    To keep the sf::Transformable class simple, there's only one origin for all the components. You cannot position the sprite relatively to its top-left corner while rotating it around its center, for example. To do such things, use sf::Transform directly.

    +

    sf::Transformable can be used as a base class. It is often combined with sf::Drawable – that's what SFML's sprites, texts and shapes do.

    class MyEntity : public sf::Transformable, public sf::Drawable
    {
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
    states.transform *= getTransform();
    target.draw(..., states);
    }
    };
    MyEntity entity;
    entity.setPosition(10, 20);
    entity.setRotation(45);
    window.draw(entity);

    It can also be used as a member, if you don't want to use its API directly (because you don't need all its functions, or you have different naming conventions for example).

    class MyEntity
    {
    public:
    void SetPosition(const MyVector& v)
    {
    myTransform.setPosition(v.x(), v.y());
    }
    void Draw(sf::RenderTarget& target) const
    {
    target.draw(..., myTransform.getTransform());
    }
    private:
    sf::Transformable myTransform;
    };

    A note on coordinates and undistorted rendering:
    +By default, SFML (or more exactly, OpenGL) may interpolate drawable objects such as sprites or texts when rendering. While this allows transitions like slow movements or rotations to appear smoothly, it can lead to unwanted results in some cases, for example blurred or distorted objects. In order to render a sf::Drawable object pixel-perfectly, make sure the involved coordinates allow a 1:1 mapping of pixels in the window to texels (pixels in the texture). More specifically, this means:

      +
    • The object's position, origin and scale have no fractional part
    • +
    • The object's and the view's rotation are a multiple of 90 degrees
    • +
    • The view's center and size have no fractional part
    • +
    +
    See also
    sf::Transform
    + +

    Definition at line 41 of file Transformable.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Transformable()

    + +
    +
    + + + + + + + +
    sf::Transformable::Transformable ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ ~Transformable()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Transformable::~Transformable ()
    +
    +virtual
    +
    + +

    Virtual destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + + + +
    const Transform& sf::Transformable::getInverseTransform () const
    +
    + +

    get the inverse of the combined transform of the object

    +
    Returns
    Inverse of the combined transformations applied to the object
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getOrigin()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::Transformable::getOrigin () const
    +
    + +

    get the local origin of the object

    +
    Returns
    Current origin
    +
    See also
    setOrigin
    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::Transformable::getPosition () const
    +
    + +

    get the position of the object

    +
    Returns
    Current position
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + + + +
    float sf::Transformable::getRotation () const
    +
    + +

    get the orientation of the object

    +

    The rotation is always in the range [0, 360].

    +
    Returns
    Current rotation, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getScale()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::Transformable::getScale () const
    +
    + +

    get the current scale of the object

    +
    Returns
    Current scale factors
    +
    See also
    setScale
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + + + +
    const Transform& sf::Transformable::getTransform () const
    +
    + +

    get the combined transform of the object

    +
    Returns
    Transform combining the position/rotation/scale/origin of the object
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::move (float offsetX,
    float offsetY 
    )
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f pos = object.getPosition();
    object.setPosition(pos.x + offsetX, pos.y + offsetY);
    Parameters
    + + + +
    offsetXX offset
    offsetYY offset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::Transformable::move (const Vector2foffset)
    +
    + +

    Move the object by a given offset.

    +

    This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

    object.setPosition(object.getPosition() + offset);
    Parameters
    + + +
    offsetOffset
    +
    +
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + + + + +
    void sf::Transformable::rotate (float angle)
    +
    + +

    Rotate the object.

    +

    This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

    object.setRotation(object.getRotation() + angle);
    Parameters
    + + +
    angleAngle of rotation, in degrees
    +
    +
    + +
    +
    + +

    ◆ scale() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::scale (float factorX,
    float factorY 
    )
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factorX, scale.y * factorY);
    Parameters
    + + + +
    factorXHorizontal scale factor
    factorYVertical scale factor
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ scale() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::Transformable::scale (const Vector2ffactor)
    +
    + +

    Scale the object.

    +

    This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

    sf::Vector2f scale = object.getScale();
    object.setScale(scale.x * factor.x, scale.y * factor.y);
    Parameters
    + + +
    factorScale factors
    +
    +
    +
    See also
    setScale
    + +
    +
    + +

    ◆ setOrigin() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setOrigin (float x,
    float y 
    )
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new origin
    yY coordinate of the new origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setOrigin() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::Transformable::setOrigin (const Vector2forigin)
    +
    + +

    set the local origin of the object

    +

    The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

    +
    Parameters
    + + +
    originNew origin
    +
    +
    +
    See also
    getOrigin
    + +
    +
    + +

    ◆ setPosition() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setPosition (float x,
    float y 
    )
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + + +
    xX coordinate of the new position
    yY coordinate of the new position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setPosition() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::Transformable::setPosition (const Vector2fposition)
    +
    + +

    set the position of the object

    +

    This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

    +
    Parameters
    + + +
    positionNew position
    +
    +
    +
    See also
    move, getPosition
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + + + + +
    void sf::Transformable::setRotation (float angle)
    +
    + +

    set the orientation of the object

    +

    This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

    +
    Parameters
    + + +
    angleNew rotation, in degrees
    +
    +
    +
    See also
    rotate, getRotation
    + +
    +
    + +

    ◆ setScale() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Transformable::setScale (float factorX,
    float factorY 
    )
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + + +
    factorXNew horizontal scale factor
    factorYNew vertical scale factor
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    + +

    ◆ setScale() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::Transformable::setScale (const Vector2ffactors)
    +
    + +

    set the scale factors of the object

    +

    This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

    +
    Parameters
    + + +
    factorsNew scale factors
    +
    +
    +
    See also
    scale, getScale
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Transformable.png b/SFML/doc/html/classsf_1_1Transformable.png new file mode 100644 index 0000000000000000000000000000000000000000..6865caa03bc82626135ca4887bd2613ebce5a432 GIT binary patch literal 1671 zcmah~X;2eM7@d&Fp&~4(p}c}tf&wav3MhmG)@zi@EQ+q;fx3#yr6589Nr8((P%t2r zgi|A^fG!?f0>iSh5fITJAVdy<5M$)pWC%HCW=DVRpVh8<{a#nS`s(X?Usosjc3FK#yhEA%gLTx8ZgHj^) zJkZ+(0i7KiJh1$1h2*EFg{3$xmMbhGcs$ORF zD<#AA`agqB3HnC?_XCxhFD>BBW1pi-c=N_pNwwO8 z45rH*6NUKsoBZ18jwb#6fAlgQUq6Zfk+*AA6q(%@gogBM3F98s>QryHejVFuUmF%x z_fD6eAYD9KH-I<6Of!%hToq~v51Rf5cLTGn^Z?@Ivv5GaV0$U0U|-E^lwgC~&q##z z2=QGKO!Q5W5Pi8g{{W=75&nL3Ai@j^UkMmCHdV%P*5v?}hGe{z#!x+u<)Ik4f#F|9 zKz!&_8O3t$_f7o;LE`DXH5EZ(a#;LE0@JXJ8k_fYhNp}Qz6n^8@S-%?ll>6vOkl2B zTMzFRE%)4zPj4@t;Dz7lPKJ`xkV|XcF4hR|QF;hB;4FKjiKxgXTn6cW=TZk9oUP#vy0)ihBoa+t_xErPw)bY_*!KG`WE8LAXT@u2X7l zUd2|hR~kK~TCuu64%{+ALrSbimk!!FVjDD!Cn~!YBdHD2Y1Cao@xnqClvZbDO|_bl z)#uoEp-v?kg;LgeWV;wkqcMIPJ7%_~x~MN?HWl0vip0FSmsF>Pq zM3rqT#go!2kCSH!+Rv8^9fYW{X7b87Jf|i+Oi;7Bi*1esi7N^4S*HXzwOUi3j>bESFIO;NU^r@JN08$no!5dxDis6paA+^H5$ zsbW$DBk!YB7p;zX-oPkXtWxv&(*B&)b#MSL-7UC;-PdYH9RB^>njYr^53&Wy_aSxS zbTXr8OtUNbHhK~QL!1T_gXK<(NB(ZZ1ZW|XTU-cjp~H8_A+atMHmQp<%b4eUE8vdW zZq(~HP${jJz=T8>eHCFLvx#>FYmkqO!26H1AXZwv*w$ZN?qYzsdHzKW#oW% z&dHbjV>JTUeL$>jP4|xEqe_!TU6?~te?PmRe6kl}U4QO~1zPtko6)(do;7lWl~U-$ zQ-RVc809v1fa%wwKezmRgq|PpNG% + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::UdpSocket Member List
    +
    +
    + +

    This is the complete list of members for sf::UdpSocket, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AnyPort enum valuesf::Socket
    bind(unsigned short port, const IpAddress &address=IpAddress::Any)sf::UdpSocket
    close()sf::Socketprotected
    create()sf::Socketprotected
    create(SocketHandle handle)sf::Socketprotected
    Disconnected enum valuesf::Socket
    Done enum valuesf::Socket
    Error enum valuesf::Socket
    getHandle() constsf::Socketprotected
    getLocalPort() constsf::UdpSocket
    isBlocking() constsf::Socket
    MaxDatagramSize enum valuesf::UdpSocket
    NotReady enum valuesf::Socket
    Partial enum valuesf::Socket
    receive(void *data, std::size_t size, std::size_t &received, IpAddress &remoteAddress, unsigned short &remotePort)sf::UdpSocket
    receive(Packet &packet, IpAddress &remoteAddress, unsigned short &remotePort)sf::UdpSocket
    send(const void *data, std::size_t size, const IpAddress &remoteAddress, unsigned short remotePort)sf::UdpSocket
    send(Packet &packet, const IpAddress &remoteAddress, unsigned short remotePort)sf::UdpSocket
    setBlocking(bool blocking)sf::Socket
    Socket(Type type)sf::Socketprotected
    Status enum namesf::Socket
    Tcp enum valuesf::Socketprotected
    Type enum namesf::Socketprotected
    Udp enum valuesf::Socketprotected
    UdpSocket()sf::UdpSocket
    unbind()sf::UdpSocket
    ~Socket()sf::Socketvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1UdpSocket.html b/SFML/doc/html/classsf_1_1UdpSocket.html new file mode 100644 index 0000000..aa24847 --- /dev/null +++ b/SFML/doc/html/classsf_1_1UdpSocket.html @@ -0,0 +1,793 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Specialized socket using the UDP protocol. + More...

    + +

    #include <UdpSocket.hpp>

    +
    +Inheritance diagram for sf::UdpSocket:
    +
    +
    + + +sf::Socket +sf::NonCopyable + +
    + + + + + + + + + + +

    +Public Types

    enum  { MaxDatagramSize = 65507 + }
     
    enum  Status {
    +  Done, +NotReady, +Partial, +Disconnected, +
    +  Error +
    + }
     Status codes that may be returned by socket functions. More...
     
    enum  { AnyPort = 0 + }
     Some special values used by sockets. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     UdpSocket ()
     Default constructor. More...
     
    unsigned short getLocalPort () const
     Get the port to which the socket is bound locally. More...
     
    Status bind (unsigned short port, const IpAddress &address=IpAddress::Any)
     Bind the socket to a specific port. More...
     
    void unbind ()
     Unbind the socket from the local port to which it is bound. More...
     
    Status send (const void *data, std::size_t size, const IpAddress &remoteAddress, unsigned short remotePort)
     Send raw data to a remote peer. More...
     
    Status receive (void *data, std::size_t size, std::size_t &received, IpAddress &remoteAddress, unsigned short &remotePort)
     Receive raw data from a remote peer. More...
     
    Status send (Packet &packet, const IpAddress &remoteAddress, unsigned short remotePort)
     Send a formatted packet of data to a remote peer. More...
     
    Status receive (Packet &packet, IpAddress &remoteAddress, unsigned short &remotePort)
     Receive a formatted packet of data from a remote peer. More...
     
    void setBlocking (bool blocking)
     Set the blocking state of the socket. More...
     
    bool isBlocking () const
     Tell whether the socket is in blocking or non-blocking mode. More...
     
    + + + + +

    +Protected Types

    enum  Type { Tcp, +Udp + }
     Types of protocols that the socket can use. More...
     
    + + + + + + + + + + + + + +

    +Protected Member Functions

    SocketHandle getHandle () const
     Return the internal handle of the socket. More...
     
    void create ()
     Create the internal representation of the socket. More...
     
    void create (SocketHandle handle)
     Create the internal representation of the socket from a socket handle. More...
     
    void close ()
     Close the socket gracefully. More...
     
    +

    Detailed Description

    +

    Specialized socket using the UDP protocol.

    +

    A UDP socket is a connectionless socket.

    +

    Instead of connecting once to a remote host, like TCP sockets, it can send to and receive from any host at any time.

    +

    It is a datagram protocol: bounded blocks of data (datagrams) are transfered over the network rather than a continuous stream of data (TCP). Therefore, one call to send will always match one call to receive (if the datagram is not lost), with the same data that was sent.

    +

    The UDP protocol is lightweight but unreliable. Unreliable means that datagrams may be duplicated, be lost or arrive reordered. However, if a datagram arrives, its data is guaranteed to be valid.

    +

    UDP is generally used for real-time communication (audio or video streaming, real-time games, etc.) where speed is crucial and lost data doesn't matter much.

    +

    Sending and receiving data can use either the low-level or the high-level functions. The low-level functions process a raw sequence of bytes, whereas the high-level interface uses packets (see sf::Packet), which are easier to use and provide more safety regarding the data that is exchanged. You can look at the sf::Packet class to get more details about how they work.

    +

    It is important to note that UdpSocket is unable to send datagrams bigger than MaxDatagramSize. In this case, it returns an error and doesn't send anything. This applies to both raw data and packets. Indeed, even packets are unable to split and recompose data, due to the unreliability of the protocol (dropped, mixed or duplicated datagrams may lead to a big mess when trying to recompose a packet).

    +

    If the socket is bound to a port, it is automatically unbound from it when the socket is destroyed. However, you can unbind the socket explicitly with the Unbind function if necessary, to stop receiving messages or make the port available for other sockets.

    +

    Usage example:

    // ----- The client -----
    // Create a socket and bind it to the port 55001
    socket.bind(55001);
    // Send a message to 192.168.1.50 on port 55002
    std::string message = "Hi, I am " + sf::IpAddress::getLocalAddress().toString();
    socket.send(message.c_str(), message.size() + 1, "192.168.1.50", 55002);
    // Receive an answer (most likely from 192.168.1.50, but could be anyone else)
    char buffer[1024];
    std::size_t received = 0;
    unsigned short port;
    socket.receive(buffer, sizeof(buffer), received, sender, port);
    std::cout << sender.ToString() << " said: " << buffer << std::endl;
    // ----- The server -----
    // Create a socket and bind it to the port 55002
    socket.bind(55002);
    // Receive a message from anyone
    char buffer[1024];
    std::size_t received = 0;
    unsigned short port;
    socket.receive(buffer, sizeof(buffer), received, sender, port);
    std::cout << sender.ToString() << " said: " << buffer << std::endl;
    // Send an answer
    std::string message = "Welcome " + sender.toString();
    socket.send(message.c_str(), message.size() + 1, sender, port);
    See also
    sf::Socket, sf::TcpSocket, sf::Packet
    + +

    Definition at line 45 of file UdpSocket.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + + +
    + + + + +
    anonymous enum
    +
    +inherited
    +
    + +

    Some special values used by sockets.

    + + +
    Enumerator
    AnyPort 

    Special value that tells the system to pick any available port.

    +
    + +

    Definition at line 66 of file Socket.hpp.

    + +
    +
    + +

    ◆ anonymous enum

    + +
    +
    + + + + +
    anonymous enum
    +
    + + +
    Enumerator
    MaxDatagramSize 

    The maximum number of bytes that can be sent in a single UDP datagram.

    +
    + +

    Definition at line 52 of file UdpSocket.hpp.

    + +
    +
    + +

    ◆ Status

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Status
    +
    +inherited
    +
    + +

    Status codes that may be returned by socket functions.

    + + + + + + +
    Enumerator
    Done 

    The socket has sent / received the data.

    +
    NotReady 

    The socket is not ready to send / receive data yet.

    +
    Partial 

    The socket sent a part of the data.

    +
    Disconnected 

    The TCP socket has been disconnected.

    +
    Error 

    An unexpected error happened.

    +
    + +

    Definition at line 53 of file Socket.hpp.

    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum sf::Socket::Type
    +
    +protectedinherited
    +
    + +

    Types of protocols that the socket can use.

    + + + +
    Enumerator
    Tcp 

    TCP protocol.

    +
    Udp 

    UDP protocol.

    +
    + +

    Definition at line 114 of file Socket.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ UdpSocket()

    + +
    +
    + + + + + + + +
    sf::UdpSocket::UdpSocket ()
    +
    + +

    Default constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ bind()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Status sf::UdpSocket::bind (unsigned short port,
    const IpAddressaddress = IpAddress::Any 
    )
    +
    + +

    Bind the socket to a specific port.

    +

    Binding the socket to a port is necessary for being able to receive data on that port. You can use the special value Socket::AnyPort to tell the system to automatically pick an available port, and then call getLocalPort to retrieve the chosen port.

    +

    Since the socket can only be bound to a single port at any given moment, if it is already bound when this function is called, it will be unbound from the previous port before being bound to the new one.

    +
    Parameters
    + + + +
    portPort to bind the socket to
    addressAddress of the interface to bind to
    +
    +
    +
    Returns
    Status code
    +
    See also
    unbind, getLocalPort
    + +
    +
    + +

    ◆ close()

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::close ()
    +
    +protectedinherited
    +
    + +

    Close the socket gracefully.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    void sf::Socket::create ()
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket.

    +

    This function can only be accessed by derived classes.

    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::create (SocketHandle handle)
    +
    +protectedinherited
    +
    + +

    Create the internal representation of the socket from a socket handle.

    +

    This function can only be accessed by derived classes.

    +
    Parameters
    + + +
    handleOS-specific handle of the socket to wrap
    +
    +
    + +
    +
    + +

    ◆ getHandle()

    + +
    +
    + + + + + +
    + + + + + + + +
    SocketHandle sf::Socket::getHandle () const
    +
    +protectedinherited
    +
    + +

    Return the internal handle of the socket.

    +

    The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

    +
    Returns
    The internal (OS-specific) handle of the socket
    + +
    +
    + +

    ◆ getLocalPort()

    + +
    +
    + + + + + + + +
    unsigned short sf::UdpSocket::getLocalPort () const
    +
    + +

    Get the port to which the socket is bound locally.

    +

    If the socket is not bound to a port, this function returns 0.

    +
    Returns
    Port to which the socket is bound
    +
    See also
    bind
    + +
    +
    + +

    ◆ isBlocking()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool sf::Socket::isBlocking () const
    +
    +inherited
    +
    + +

    Tell whether the socket is in blocking or non-blocking mode.

    +
    Returns
    True if the socket is blocking, false otherwise
    +
    See also
    setBlocking
    + +
    +
    + +

    ◆ receive() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::UdpSocket::receive (void * data,
    std::size_t size,
    std::size_t & received,
    IpAddressremoteAddress,
    unsigned short & remotePort 
    )
    +
    + +

    Receive raw data from a remote peer.

    +

    In blocking mode, this function will wait until some bytes are actually received. Be careful to use a buffer which is large enough for the data that you intend to receive, if it is too small then an error will be returned and all the data will be lost.

    +
    Parameters
    + + + + + + +
    dataPointer to the array to fill with the received bytes
    sizeMaximum number of bytes that can be received
    receivedThis variable is filled with the actual number of bytes received
    remoteAddressAddress of the peer that sent the data
    remotePortPort of the peer that sent the data
    +
    +
    +
    Returns
    Status code
    +
    See also
    send
    + +
    +
    + +

    ◆ receive() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::UdpSocket::receive (Packetpacket,
    IpAddressremoteAddress,
    unsigned short & remotePort 
    )
    +
    + +

    Receive a formatted packet of data from a remote peer.

    +

    In blocking mode, this function will wait until the whole packet has been received.

    +
    Parameters
    + + + + +
    packetPacket to fill with the received data
    remoteAddressAddress of the peer that sent the data
    remotePortPort of the peer that sent the data
    +
    +
    +
    Returns
    Status code
    +
    See also
    send
    + +
    +
    + +

    ◆ send() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::UdpSocket::send (const void * data,
    std::size_t size,
    const IpAddressremoteAddress,
    unsigned short remotePort 
    )
    +
    + +

    Send raw data to a remote peer.

    +

    Make sure that size is not greater than UdpSocket::MaxDatagramSize, otherwise this function will fail and no data will be sent.

    +
    Parameters
    + + + + + +
    dataPointer to the sequence of bytes to send
    sizeNumber of bytes to send
    remoteAddressAddress of the receiver
    remotePortPort of the receiver to send the data to
    +
    +
    +
    Returns
    Status code
    +
    See also
    receive
    + +
    +
    + +

    ◆ send() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status sf::UdpSocket::send (Packetpacket,
    const IpAddressremoteAddress,
    unsigned short remotePort 
    )
    +
    + +

    Send a formatted packet of data to a remote peer.

    +

    Make sure that the packet size is not greater than UdpSocket::MaxDatagramSize, otherwise this function will fail and no data will be sent.

    +
    Parameters
    + + + + +
    packetPacket to send
    remoteAddressAddress of the receiver
    remotePortPort of the receiver to send the data to
    +
    +
    +
    Returns
    Status code
    +
    See also
    receive
    + +
    +
    + +

    ◆ setBlocking()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void sf::Socket::setBlocking (bool blocking)
    +
    +inherited
    +
    + +

    Set the blocking state of the socket.

    +

    In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

    +
    Parameters
    + + +
    blockingTrue to set the socket as blocking, false for non-blocking
    +
    +
    +
    See also
    isBlocking
    + +
    +
    + +

    ◆ unbind()

    + +
    +
    + + + + + + + +
    void sf::UdpSocket::unbind ()
    +
    + +

    Unbind the socket from the local port to which it is bound.

    +

    The port that the socket was previously bound to is immediately made available to the operating system after this function is called. This means that a subsequent call to bind() will be able to re-bind the port if no other process has done so in the mean time. If the socket is not bound to a port, this function has no effect.

    +
    See also
    bind
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1UdpSocket.png b/SFML/doc/html/classsf_1_1UdpSocket.png new file mode 100644 index 0000000000000000000000000000000000000000..1d089ed5a7de2e8401055c36491c83b826ee8fed GIT binary patch literal 723 zcmV;^0xbQBP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0007FNklJ^rcBt6kK-!9vc>g1ZP&v_D-RIdxtBemIXNDGrva2e-7sjUqkuB{mh>A@*) zq^mxsTU}5#+=h?Vn$1~KyX78!NNR5N#V4e$Ik|(clGX!E-7>-IAL|I4=uMJ6)((Gq zPS#_6f3o-5BiWIjo>SwY!nA&B8nm-nS-*_ZzbD?4qyaVEl%!LAigXG36zLi?|JRVD zVf`p6#uz;W@V0IME^;H?ZeA!i(gJcq`H=v;^m`S}ngIR>&6)tdU$Z8F@7Jse;QKXe z0{DK-n(`;c7+pk^BnM5BB#r8;NFmgx`dp_^2a?QnO{y=ar!Ln=NRJ9k8Md~1d#uTW zqnckKtvQ-(g=iVk^LB;yq}46sj%Z%ao8OU2_r@Jj&*_v@ zmVByv)nCSR)q81v9gKNTl0K(NlB7{hk|d4Fl@w!)9s+n+1SmCZ(4*)$ZE- zIhl!Fkq-OR=FF@%>sH^3q+NH;N&9Fet!{b65zVq=(m}K&>y3JKP94dd(<#5BztX+x zq^&8&dnVd?Z{3mc% + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Utf< N > Class Template Reference
    +
    +
    + +

    Utility class providing generic functions for UTF conversions. + More...

    + +

    #include <Utf.hpp>

    +

    Detailed Description

    +

    template<unsigned int N>
    +class sf::Utf< N >

    + +

    Utility class providing generic functions for UTF conversions.

    +

    sf::Utf is a low-level, generic interface for counting, iterating, encoding and decoding Unicode characters and strings. It is able to handle ANSI, wide, latin-1, UTF-8, UTF-16 and UTF-32 encodings.

    +

    sf::Utf<X> functions are all static, these classes are not meant to be instantiated. All the functions are template, so that you can use any character / string type for a given encoding.

    +

    It has 3 specializations:

    + +

    Definition at line 41 of file Utf.hpp.

    +

    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_0116_01_4-members.html b/SFML/doc/html/classsf_1_1Utf_3_0116_01_4-members.html new file mode 100644 index 0000000..fcbd952 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_0116_01_4-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Utf< 16 > Member List
    +
    +
    + +

    This is the complete list of members for sf::Utf< 16 >, including all inherited members.

    + + + + + + + + + + + + + + +
    count(In begin, In end)sf::Utf< 16 >static
    decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 16 >static
    encode(Uint32 input, Out output, Uint16 replacement=0)sf::Utf< 16 >static
    fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 16 >static
    fromLatin1(In begin, In end, Out output)sf::Utf< 16 >static
    fromWide(In begin, In end, Out output)sf::Utf< 16 >static
    next(In begin, In end)sf::Utf< 16 >static
    toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 16 >static
    toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 16 >static
    toUtf16(In begin, In end, Out output)sf::Utf< 16 >static
    toUtf32(In begin, In end, Out output)sf::Utf< 16 >static
    toUtf8(In begin, In end, Out output)sf::Utf< 16 >static
    toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 16 >static
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_0116_01_4.html b/SFML/doc/html/classsf_1_1Utf_3_0116_01_4.html new file mode 100644 index 0000000..07bffa8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_0116_01_4.html @@ -0,0 +1,883 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Utf< 16 > Class Template Reference
    +
    +
    + +

    Specialization of the Utf template for UTF-16. + More...

    + +

    #include <Utf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename In >
    static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
     Decode a single UTF-16 character. More...
     
    template<typename Out >
    static Out encode (Uint32 input, Out output, Uint16 replacement=0)
     Encode a single UTF-16 character. More...
     
    template<typename In >
    static In next (In begin, In end)
     Advance to the next UTF-16 character. More...
     
    template<typename In >
    static std::size_t count (In begin, In end)
     Count the number of characters of a UTF-16 sequence. More...
     
    template<typename In , typename Out >
    static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
     Convert an ANSI characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out fromWide (In begin, In end, Out output)
     Convert a wide characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out fromLatin1 (In begin, In end, Out output)
     Convert a latin-1 (ISO-5589-1) characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
     Convert an UTF-16 characters range to ANSI characters. More...
     
    template<typename In , typename Out >
    static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
     Convert an UTF-16 characters range to wide characters. More...
     
    template<typename In , typename Out >
    static Out toLatin1 (In begin, In end, Out output, char replacement=0)
     Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters. More...
     
    template<typename In , typename Out >
    static Out toUtf8 (In begin, In end, Out output)
     Convert a UTF-16 characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out toUtf16 (In begin, In end, Out output)
     Convert a UTF-16 characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out toUtf32 (In begin, In end, Out output)
     Convert a UTF-16 characters range to UTF-32. More...
     
    +

    Detailed Description

    +

    template<>
    +class sf::Utf< 16 >

    + +

    Specialization of the Utf template for UTF-16.

    + +

    Definition at line 255 of file Utf.hpp.

    +

    Member Function Documentation

    + +

    ◆ count()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static std::size_t sf::Utf< 16 >::count (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Count the number of characters of a UTF-16 sequence.

    +

    This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element, thus the total size can be different from (begin - end).

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ decode()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 16 >::decode (In begin,
    In end,
    Uint32 & output,
    Uint32 replacement = 0 
    )
    +
    +static
    +
    + +

    Decode a single UTF-16 character.

    +

    Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputCodepoint of the decoded UTF-16 character
    replacementReplacement character to use in case the UTF-8 sequence is invalid
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ encode()

    + +
    +
    +
    +template<typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::encode (Uint32 input,
    Out output,
    Uint16 replacement = 0 
    )
    +
    +static
    +
    + +

    Encode a single UTF-16 character.

    +

    Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-16.

    +
    Parameters
    + + + + +
    inputCodepoint to encode as UTF-16
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to UTF-16 (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::fromAnsi (In begin,
    In end,
    Out output,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an ANSI characters range to UTF-16.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::fromLatin1 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a latin-1 (ISO-5589-1) characters range to UTF-16.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::fromWide (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a wide characters range to UTF-16.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ next()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 16 >::next (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Advance to the next UTF-16 character.

    +

    This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element.

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ toAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toAnsi (In begin,
    In end,
    Out output,
    char replacement = 0,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an UTF-16 characters range to ANSI characters.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toLatin1 (In begin,
    In end,
    Out output,
    char replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf16()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toUtf16 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-16 characters range to UTF-16.

    +

    This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf32()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toUtf32 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-16 characters range to UTF-32.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf8()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toUtf8 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-16 characters range to UTF-8.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 16 >::toWide (In begin,
    In end,
    Out output,
    wchar_t replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-16 characters range to wide characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_0132_01_4-members.html b/SFML/doc/html/classsf_1_1Utf_3_0132_01_4-members.html new file mode 100644 index 0000000..fd8e1b8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_0132_01_4-members.html @@ -0,0 +1,78 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Utf< 32 > Member List
    +
    +
    + +

    This is the complete list of members for sf::Utf< 32 >, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    count(In begin, In end)sf::Utf< 32 >static
    decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 32 >static
    decodeAnsi(In input, const std::locale &locale=std::locale())sf::Utf< 32 >static
    decodeWide(In input)sf::Utf< 32 >static
    encode(Uint32 input, Out output, Uint32 replacement=0)sf::Utf< 32 >static
    encodeAnsi(Uint32 codepoint, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 32 >static
    encodeWide(Uint32 codepoint, Out output, wchar_t replacement=0)sf::Utf< 32 >static
    fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 32 >static
    fromLatin1(In begin, In end, Out output)sf::Utf< 32 >static
    fromWide(In begin, In end, Out output)sf::Utf< 32 >static
    next(In begin, In end)sf::Utf< 32 >static
    toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 32 >static
    toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 32 >static
    toUtf16(In begin, In end, Out output)sf::Utf< 32 >static
    toUtf32(In begin, In end, Out output)sf::Utf< 32 >static
    toUtf8(In begin, In end, Out output)sf::Utf< 32 >static
    toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 32 >static
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_0132_01_4.html b/SFML/doc/html/classsf_1_1Utf_3_0132_01_4.html new file mode 100644 index 0000000..22a9df1 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_0132_01_4.html @@ -0,0 +1,1105 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Utf< 32 > Class Template Reference
    +
    +
    + +

    Specialization of the Utf template for UTF-32. + More...

    + +

    #include <Utf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename In >
    static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
     Decode a single UTF-32 character. More...
     
    template<typename Out >
    static Out encode (Uint32 input, Out output, Uint32 replacement=0)
     Encode a single UTF-32 character. More...
     
    template<typename In >
    static In next (In begin, In end)
     Advance to the next UTF-32 character. More...
     
    template<typename In >
    static std::size_t count (In begin, In end)
     Count the number of characters of a UTF-32 sequence. More...
     
    template<typename In , typename Out >
    static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
     Convert an ANSI characters range to UTF-32. More...
     
    template<typename In , typename Out >
    static Out fromWide (In begin, In end, Out output)
     Convert a wide characters range to UTF-32. More...
     
    template<typename In , typename Out >
    static Out fromLatin1 (In begin, In end, Out output)
     Convert a latin-1 (ISO-5589-1) characters range to UTF-32. More...
     
    template<typename In , typename Out >
    static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
     Convert an UTF-32 characters range to ANSI characters. More...
     
    template<typename In , typename Out >
    static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
     Convert an UTF-32 characters range to wide characters. More...
     
    template<typename In , typename Out >
    static Out toLatin1 (In begin, In end, Out output, char replacement=0)
     Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters. More...
     
    template<typename In , typename Out >
    static Out toUtf8 (In begin, In end, Out output)
     Convert a UTF-32 characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out toUtf16 (In begin, In end, Out output)
     Convert a UTF-32 characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out toUtf32 (In begin, In end, Out output)
     Convert a UTF-32 characters range to UTF-32. More...
     
    template<typename In >
    static Uint32 decodeAnsi (In input, const std::locale &locale=std::locale())
     Decode a single ANSI character to UTF-32. More...
     
    template<typename In >
    static Uint32 decodeWide (In input)
     Decode a single wide character to UTF-32. More...
     
    template<typename Out >
    static Out encodeAnsi (Uint32 codepoint, Out output, char replacement=0, const std::locale &locale=std::locale())
     Encode a single UTF-32 character to ANSI. More...
     
    template<typename Out >
    static Out encodeWide (Uint32 codepoint, Out output, wchar_t replacement=0)
     Encode a single UTF-32 character to wide. More...
     
    +

    Detailed Description

    +

    template<>
    +class sf::Utf< 32 >

    + +

    Specialization of the Utf template for UTF-32.

    + +

    Definition at line 462 of file Utf.hpp.

    +

    Member Function Documentation

    + +

    ◆ count()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static std::size_t sf::Utf< 32 >::count (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Count the number of characters of a UTF-32 sequence.

    +

    This function is trivial for UTF-32, which can store every character in a single storage element.

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ decode()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 32 >::decode (In begin,
    In end,
    Uint32 & output,
    Uint32 replacement = 0 
    )
    +
    +static
    +
    + +

    Decode a single UTF-32 character.

    +

    Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard. For UTF-32, the character value is the same as the codepoint.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputCodepoint of the decoded UTF-32 character
    replacementReplacement character to use in case the UTF-8 sequence is invalid
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ decodeAnsi()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static Uint32 sf::Utf< 32 >::decodeAnsi (In input,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Decode a single ANSI character to UTF-32.

    +

    This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

    +
    Parameters
    + + + +
    inputInput ANSI character
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Converted character
    + +
    +
    + +

    ◆ decodeWide()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + +
    static Uint32 sf::Utf< 32 >::decodeWide (In input)
    +
    +static
    +
    + +

    Decode a single wide character to UTF-32.

    +

    This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

    +
    Parameters
    + + +
    inputInput wide character
    +
    +
    +
    Returns
    Converted character
    + +
    +
    + +

    ◆ encode()

    + +
    +
    +
    +template<typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::encode (Uint32 input,
    Out output,
    Uint32 replacement = 0 
    )
    +
    +static
    +
    + +

    Encode a single UTF-32 character.

    +

    Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-32. For UTF-32, the codepoint is the same as the character value.

    +
    Parameters
    + + + + +
    inputCodepoint to encode as UTF-32
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to UTF-32 (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ encodeAnsi()

    + +
    +
    +
    +template<typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::encodeAnsi (Uint32 codepoint,
    Out output,
    char replacement = 0,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Encode a single UTF-32 character to ANSI.

    +

    This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

    +
    Parameters
    + + + + + +
    codepointIterator pointing to the beginning of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement if the input character is not convertible to ANSI (use 0 to skip it)
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ encodeWide()

    + +
    +
    +
    +template<typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::encodeWide (Uint32 codepoint,
    Out output,
    wchar_t replacement = 0 
    )
    +
    +static
    +
    + +

    Encode a single UTF-32 character to wide.

    +

    This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

    +
    Parameters
    + + + + +
    codepointIterator pointing to the beginning of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement if the input character is not convertible to wide (use 0 to skip it)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::fromAnsi (In begin,
    In end,
    Out output,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an ANSI characters range to UTF-32.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::fromLatin1 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a latin-1 (ISO-5589-1) characters range to UTF-32.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::fromWide (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a wide characters range to UTF-32.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ next()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 32 >::next (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Advance to the next UTF-32 character.

    +

    This function is trivial for UTF-32, which can store every character in a single storage element.

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ toAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toAnsi (In begin,
    In end,
    Out output,
    char replacement = 0,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an UTF-32 characters range to ANSI characters.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toLatin1 (In begin,
    In end,
    Out output,
    char replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf16()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toUtf16 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-32 characters range to UTF-16.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf32()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toUtf32 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-32 characters range to UTF-32.

    +

    This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf8()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toUtf8 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-32 characters range to UTF-8.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 32 >::toWide (In begin,
    In end,
    Out output,
    wchar_t replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-32 characters range to wide characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_018_01_4-members.html b/SFML/doc/html/classsf_1_1Utf_3_018_01_4-members.html new file mode 100644 index 0000000..c974de7 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_018_01_4-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Utf< 8 > Member List
    +
    +
    + +

    This is the complete list of members for sf::Utf< 8 >, including all inherited members.

    + + + + + + + + + + + + + + +
    count(In begin, In end)sf::Utf< 8 >static
    decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 8 >static
    encode(Uint32 input, Out output, Uint8 replacement=0)sf::Utf< 8 >static
    fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 8 >static
    fromLatin1(In begin, In end, Out output)sf::Utf< 8 >static
    fromWide(In begin, In end, Out output)sf::Utf< 8 >static
    next(In begin, In end)sf::Utf< 8 >static
    toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 8 >static
    toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 8 >static
    toUtf16(In begin, In end, Out output)sf::Utf< 8 >static
    toUtf32(In begin, In end, Out output)sf::Utf< 8 >static
    toUtf8(In begin, In end, Out output)sf::Utf< 8 >static
    toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 8 >static
    + + + + diff --git a/SFML/doc/html/classsf_1_1Utf_3_018_01_4.html b/SFML/doc/html/classsf_1_1Utf_3_018_01_4.html new file mode 100644 index 0000000..1e751d4 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Utf_3_018_01_4.html @@ -0,0 +1,883 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Utf< 8 > Class Template Reference
    +
    +
    + +

    Specialization of the Utf template for UTF-8. + More...

    + +

    #include <Utf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename In >
    static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
     Decode a single UTF-8 character. More...
     
    template<typename Out >
    static Out encode (Uint32 input, Out output, Uint8 replacement=0)
     Encode a single UTF-8 character. More...
     
    template<typename In >
    static In next (In begin, In end)
     Advance to the next UTF-8 character. More...
     
    template<typename In >
    static std::size_t count (In begin, In end)
     Count the number of characters of a UTF-8 sequence. More...
     
    template<typename In , typename Out >
    static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
     Convert an ANSI characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out fromWide (In begin, In end, Out output)
     Convert a wide characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out fromLatin1 (In begin, In end, Out output)
     Convert a latin-1 (ISO-5589-1) characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
     Convert an UTF-8 characters range to ANSI characters. More...
     
    template<typename In , typename Out >
    static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
     Convert an UTF-8 characters range to wide characters. More...
     
    template<typename In , typename Out >
    static Out toLatin1 (In begin, In end, Out output, char replacement=0)
     Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters. More...
     
    template<typename In , typename Out >
    static Out toUtf8 (In begin, In end, Out output)
     Convert a UTF-8 characters range to UTF-8. More...
     
    template<typename In , typename Out >
    static Out toUtf16 (In begin, In end, Out output)
     Convert a UTF-8 characters range to UTF-16. More...
     
    template<typename In , typename Out >
    static Out toUtf32 (In begin, In end, Out output)
     Convert a UTF-8 characters range to UTF-32. More...
     
    +

    Detailed Description

    +

    template<>
    +class sf::Utf< 8 >

    + +

    Specialization of the Utf template for UTF-8.

    + +

    Definition at line 48 of file Utf.hpp.

    +

    Member Function Documentation

    + +

    ◆ count()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static std::size_t sf::Utf< 8 >::count (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Count the number of characters of a UTF-8 sequence.

    +

    This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element, thus the total size can be different from (begin - end).

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ decode()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 8 >::decode (In begin,
    In end,
    Uint32 & output,
    Uint32 replacement = 0 
    )
    +
    +static
    +
    + +

    Decode a single UTF-8 character.

    +

    Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputCodepoint of the decoded UTF-8 character
    replacementReplacement character to use in case the UTF-8 sequence is invalid
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ encode()

    + +
    +
    +
    +template<typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::encode (Uint32 input,
    Out output,
    Uint8 replacement = 0 
    )
    +
    +static
    +
    + +

    Encode a single UTF-8 character.

    +

    Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-8.

    +
    Parameters
    + + + + +
    inputCodepoint to encode as UTF-8
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to UTF-8 (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::fromAnsi (In begin,
    In end,
    Out output,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an ANSI characters range to UTF-8.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::fromLatin1 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a latin-1 (ISO-5589-1) characters range to UTF-8.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ fromWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::fromWide (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a wide characters range to UTF-8.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ next()

    + +
    +
    +
    +template<typename In >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static In sf::Utf< 8 >::next (In begin,
    In end 
    )
    +
    +static
    +
    + +

    Advance to the next UTF-8 character.

    +

    This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element.

    +
    Parameters
    + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    +
    +
    +
    Returns
    Iterator pointing to one past the last read element of the input sequence
    + +
    +
    + +

    ◆ toAnsi()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toAnsi (In begin,
    In end,
    Out output,
    char replacement = 0,
    const std::locale & locale = std::locale() 
    )
    +
    +static
    +
    + +

    Convert an UTF-8 characters range to ANSI characters.

    +

    The current global locale will be used by default, unless you pass a custom one in the locale parameter.

    +
    Parameters
    + + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
    localeLocale to use for conversion
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toLatin1()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toLatin1 (In begin,
    In end,
    Out output,
    char replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf16()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toUtf16 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-8 characters range to UTF-16.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf32()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toUtf32 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-8 characters range to UTF-32.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toUtf8()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toUtf8 (In begin,
    In end,
    Out output 
    )
    +
    +static
    +
    + +

    Convert a UTF-8 characters range to UTF-8.

    +

    This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

    +
    Parameters
    + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    + +

    ◆ toWide()

    + +
    +
    +
    +template<typename In , typename Out >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static Out sf::Utf< 8 >::toWide (In begin,
    In end,
    Out output,
    wchar_t replacement = 0 
    )
    +
    +static
    +
    + +

    Convert an UTF-8 characters range to wide characters.

    +
    Parameters
    + + + + + +
    beginIterator pointing to the beginning of the input sequence
    endIterator pointing to the end of the input sequence
    outputIterator pointing to the beginning of the output sequence
    replacementReplacement for characters not convertible to wide (use 0 to skip them)
    +
    +
    +
    Returns
    Iterator to the end of the output sequence which has been written
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vector2-members.html b/SFML/doc/html/classsf_1_1Vector2-members.html new file mode 100644 index 0000000..d2b9a73 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vector2-members.html @@ -0,0 +1,78 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Vector2< T > Member List
    +
    +
    + +

    This is the complete list of members for sf::Vector2< T >, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    operator!=(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    operator*(const Vector2< T > &left, T right)sf::Vector2< T >related
    operator*(T left, const Vector2< T > &right)sf::Vector2< T >related
    operator*=(Vector2< T > &left, T right)sf::Vector2< T >related
    operator+(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    operator+=(Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    operator-(const Vector2< T > &right)sf::Vector2< T >related
    operator-(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    operator-=(Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    operator/(const Vector2< T > &left, T right)sf::Vector2< T >related
    operator/=(Vector2< T > &left, T right)sf::Vector2< T >related
    operator==(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
    Vector2()sf::Vector2< T >
    Vector2(T X, T Y)sf::Vector2< T >
    Vector2(const Vector2< U > &vector)sf::Vector2< T >explicit
    xsf::Vector2< T >
    ysf::Vector2< T >
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vector2.html b/SFML/doc/html/classsf_1_1Vector2.html new file mode 100644 index 0000000..c866b31 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vector2.html @@ -0,0 +1,878 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Vector2< T > Class Template Reference
    +
    +
    + +

    Utility template class for manipulating 2-dimensional vectors. + More...

    + +

    #include <Vector2.hpp>

    + + + + + + + + + + + + +

    +Public Member Functions

     Vector2 ()
     Default constructor. More...
     
     Vector2 (T X, T Y)
     Construct the vector from its coordinates. More...
     
    template<typename U >
     Vector2 (const Vector2< U > &vector)
     Construct the vector from another type of vector. More...
     
    + + + + + + + +

    +Public Attributes

    x
     X coordinate of the vector. More...
     
    y
     Y coordinate of the vector. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    template<typename T >
    Vector2< T > operator- (const Vector2< T > &right)
     Overload of unary operator -. More...
     
    template<typename T >
    Vector2< T > & operator+= (Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator +=. More...
     
    template<typename T >
    Vector2< T > & operator-= (Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator -=. More...
     
    template<typename T >
    Vector2< T > operator+ (const Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator +. More...
     
    template<typename T >
    Vector2< T > operator- (const Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator -. More...
     
    template<typename T >
    Vector2< T > operator* (const Vector2< T > &left, T right)
     Overload of binary operator *. More...
     
    template<typename T >
    Vector2< T > operator* (T left, const Vector2< T > &right)
     Overload of binary operator *. More...
     
    template<typename T >
    Vector2< T > & operator*= (Vector2< T > &left, T right)
     Overload of binary operator *=. More...
     
    template<typename T >
    Vector2< T > operator/ (const Vector2< T > &left, T right)
     Overload of binary operator /. More...
     
    template<typename T >
    Vector2< T > & operator/= (Vector2< T > &left, T right)
     Overload of binary operator /=. More...
     
    template<typename T >
    bool operator== (const Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator ==. More...
     
    template<typename T >
    bool operator!= (const Vector2< T > &left, const Vector2< T > &right)
     Overload of binary operator !=. More...
     
    +

    Detailed Description

    +

    template<typename T>
    +class sf::Vector2< T >

    + +

    Utility template class for manipulating 2-dimensional vectors.

    +

    sf::Vector2 is a simple class that defines a mathematical vector with two coordinates (x and y).

    +

    It can be used to represent anything that has two dimensions: a size, a point, a velocity, etc.

    +

    The template parameter T is the type of the coordinates. It can be any type that supports arithmetic operations (+, -, /, *) and comparisons (==, !=), for example int or float.

    +

    You generally don't have to care about the templated form (sf::Vector2<T>), the most common specializations have special typedefs:

      +
    • sf::Vector2<float> is sf::Vector2f
    • +
    • sf::Vector2<int> is sf::Vector2i
    • +
    • sf::Vector2<unsigned int> is sf::Vector2u
    • +
    +

    The sf::Vector2 class has a small and simple interface, its x and y members can be accessed directly (there are no accessors like setX(), getX()) and it contains no mathematical function like dot product, cross product, length, etc.

    +

    Usage example:

    sf::Vector2f v1(16.5f, 24.f);
    v1.x = 18.2f;
    float y = v1.y;
    sf::Vector2f v2 = v1 * 5.f;
    v3 = v1 + v2;
    bool different = (v2 != v3);

    Note: for 3-dimensional vectors, see sf::Vector3.

    + +

    Definition at line 37 of file Vector2.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Vector2() [1/3]

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    sf::Vector2< T >::Vector2 ()
    +
    + +

    Default constructor.

    +

    Creates a Vector2(0, 0).

    + +
    +
    + +

    ◆ Vector2() [2/3]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + +
    sf::Vector2< T >::Vector2 (X,
    Y 
    )
    +
    + +

    Construct the vector from its coordinates.

    +
    Parameters
    + + + +
    XX coordinate
    YY coordinate
    +
    +
    + +
    +
    + +

    ◆ Vector2() [3/3]

    + +
    +
    +
    +template<typename T>
    +
    +template<typename U >
    + + + + + +
    + + + + + + + + +
    sf::Vector2< T >::Vector2 (const Vector2< U > & vector)
    +
    +explicit
    +
    + +

    Construct the vector from another type of vector.

    +

    This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

    +
    Parameters
    + + +
    vectorVector to convert
    +
    +
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator !=.

    +

    This operator compares strict difference between two vectors.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    True if left is not equal to right
    + +
    +
    + +

    ◆ operator*() [1/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > operator* (const Vector2< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Memberwise multiplication by right
    + +
    +
    + +

    ◆ operator*() [2/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > operator* (left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *.

    +
    Parameters
    + + + +
    leftLeft operand (a scalar value)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise multiplication by left
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > & operator*= (Vector2< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *=.

    +

    This operator performs a memberwise multiplication by right, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > operator+ (const Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator +.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise addition of both vectors
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > & operator+= (Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator +=.

    +

    This operator performs a memberwise addition of both vectors, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator-() [1/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    Vector2< T > operator- (const Vector2< T > & right)
    +
    +related
    +
    + +

    Overload of unary operator -.

    +
    Parameters
    + + +
    rightVector to negate
    +
    +
    +
    Returns
    Memberwise opposite of the vector
    + +
    +
    + +

    ◆ operator-() [2/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > operator- (const Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator -.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise subtraction of both vectors
    + +
    +
    + +

    ◆ operator-=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > & operator-= (Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator -=.

    +

    This operator performs a memberwise subtraction of both vectors, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator/()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > operator/ (const Vector2< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator /.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Memberwise division by right
    + +
    +
    + +

    ◆ operator/=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector2< T > & operator/= (Vector2< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator /=.

    +

    This operator performs a memberwise division by right, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Vector2< T > & left,
    const Vector2< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator ==.

    +

    This operator compares strict equality between two vectors.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    True if left is equal to right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ x

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Vector2< T >::x
    +
    + +

    X coordinate of the vector.

    + +

    Definition at line 75 of file Vector2.hpp.

    + +
    +
    + +

    ◆ y

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Vector2< T >::y
    +
    + +

    Y coordinate of the vector.

    + +

    Definition at line 76 of file Vector2.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vector3-members.html b/SFML/doc/html/classsf_1_1Vector3-members.html new file mode 100644 index 0000000..3b25ece --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vector3-members.html @@ -0,0 +1,79 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Vector3< T > Member List
    +
    +
    + +

    This is the complete list of members for sf::Vector3< T >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    operator!=(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    operator*(const Vector3< T > &left, T right)sf::Vector3< T >related
    operator*(T left, const Vector3< T > &right)sf::Vector3< T >related
    operator*=(Vector3< T > &left, T right)sf::Vector3< T >related
    operator+(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    operator+=(Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    operator-(const Vector3< T > &left)sf::Vector3< T >related
    operator-(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    operator-=(Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    operator/(const Vector3< T > &left, T right)sf::Vector3< T >related
    operator/=(Vector3< T > &left, T right)sf::Vector3< T >related
    operator==(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
    Vector3()sf::Vector3< T >
    Vector3(T X, T Y, T Z)sf::Vector3< T >
    Vector3(const Vector3< U > &vector)sf::Vector3< T >explicit
    xsf::Vector3< T >
    ysf::Vector3< T >
    zsf::Vector3< T >
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vector3.html b/SFML/doc/html/classsf_1_1Vector3.html new file mode 100644 index 0000000..151ebee --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vector3.html @@ -0,0 +1,907 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::Vector3< T > Class Template Reference
    +
    +
    + +

    Utility template class for manipulating 3-dimensional vectors. + More...

    + +

    #include <Vector3.hpp>

    + + + + + + + + + + + + +

    +Public Member Functions

     Vector3 ()
     Default constructor. More...
     
     Vector3 (T X, T Y, T Z)
     Construct the vector from its coordinates. More...
     
    template<typename U >
     Vector3 (const Vector3< U > &vector)
     Construct the vector from another type of vector. More...
     
    + + + + + + + + + + +

    +Public Attributes

    x
     X coordinate of the vector. More...
     
    y
     Y coordinate of the vector. More...
     
    z
     Z coordinate of the vector. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    template<typename T >
    Vector3< T > operator- (const Vector3< T > &left)
     Overload of unary operator -. More...
     
    template<typename T >
    Vector3< T > & operator+= (Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator +=. More...
     
    template<typename T >
    Vector3< T > & operator-= (Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator -=. More...
     
    template<typename T >
    Vector3< T > operator+ (const Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator +. More...
     
    template<typename T >
    Vector3< T > operator- (const Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator -. More...
     
    template<typename T >
    Vector3< T > operator* (const Vector3< T > &left, T right)
     Overload of binary operator *. More...
     
    template<typename T >
    Vector3< T > operator* (T left, const Vector3< T > &right)
     Overload of binary operator *. More...
     
    template<typename T >
    Vector3< T > & operator*= (Vector3< T > &left, T right)
     Overload of binary operator *=. More...
     
    template<typename T >
    Vector3< T > operator/ (const Vector3< T > &left, T right)
     Overload of binary operator /. More...
     
    template<typename T >
    Vector3< T > & operator/= (Vector3< T > &left, T right)
     Overload of binary operator /=. More...
     
    template<typename T >
    bool operator== (const Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator ==. More...
     
    template<typename T >
    bool operator!= (const Vector3< T > &left, const Vector3< T > &right)
     Overload of binary operator !=. More...
     
    +

    Detailed Description

    +

    template<typename T>
    +class sf::Vector3< T >

    + +

    Utility template class for manipulating 3-dimensional vectors.

    +

    sf::Vector3 is a simple class that defines a mathematical vector with three coordinates (x, y and z).

    +

    It can be used to represent anything that has three dimensions: a size, a point, a velocity, etc.

    +

    The template parameter T is the type of the coordinates. It can be any type that supports arithmetic operations (+, -, /, *) and comparisons (==, !=), for example int or float.

    +

    You generally don't have to care about the templated form (sf::Vector3<T>), the most common specializations have special typedefs:

      +
    • sf::Vector3<float> is sf::Vector3f
    • +
    • sf::Vector3<int> is sf::Vector3i
    • +
    +

    The sf::Vector3 class has a small and simple interface, its x and y members can be accessed directly (there are no accessors like setX(), getX()) and it contains no mathematical function like dot product, cross product, length, etc.

    +

    Usage example:

    sf::Vector3f v1(16.5f, 24.f, -8.2f);
    v1.x = 18.2f;
    float y = v1.y;
    float z = v1.z;
    sf::Vector3f v2 = v1 * 5.f;
    v3 = v1 + v2;
    bool different = (v2 != v3);

    Note: for 2-dimensional vectors, see sf::Vector2.

    + +

    Definition at line 37 of file Vector3.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Vector3() [1/3]

    + +
    +
    +
    +template<typename T>
    + + + + + + + +
    sf::Vector3< T >::Vector3 ()
    +
    + +

    Default constructor.

    +

    Creates a Vector3(0, 0, 0).

    + +
    +
    + +

    ◆ Vector3() [2/3]

    + +
    +
    +
    +template<typename T>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Vector3< T >::Vector3 (X,
    Y,
    Z 
    )
    +
    + +

    Construct the vector from its coordinates.

    +
    Parameters
    + + + + +
    XX coordinate
    YY coordinate
    ZZ coordinate
    +
    +
    + +
    +
    + +

    ◆ Vector3() [3/3]

    + +
    +
    +
    +template<typename T>
    +
    +template<typename U >
    + + + + + +
    + + + + + + + + +
    sf::Vector3< T >::Vector3 (const Vector3< U > & vector)
    +
    +explicit
    +
    + +

    Construct the vector from another type of vector.

    +

    This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

    +
    Parameters
    + + +
    vectorVector to convert
    +
    +
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator !=.

    +

    This operator compares strict difference between two vectors.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    True if left is not equal to right
    + +
    +
    + +

    ◆ operator*() [1/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > operator* (const Vector3< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Memberwise multiplication by right
    + +
    +
    + +

    ◆ operator*() [2/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > operator* (left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *.

    +
    Parameters
    + + + +
    leftLeft operand (a scalar value)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise multiplication by left
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > & operator*= (Vector3< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator *=.

    +

    This operator performs a memberwise multiplication by right, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > operator+ (const Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator +.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise addition of both vectors
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > & operator+= (Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator +=.

    +

    This operator performs a memberwise addition of both vectors, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator-() [1/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    Vector3< T > operator- (const Vector3< T > & left)
    +
    +related
    +
    + +

    Overload of unary operator -.

    +
    Parameters
    + + +
    leftVector to negate
    +
    +
    +
    Returns
    Memberwise opposite of the vector
    + +
    +
    + +

    ◆ operator-() [2/2]

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > operator- (const Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator -.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Memberwise subtraction of both vectors
    + +
    +
    + +

    ◆ operator-=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > & operator-= (Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator -=.

    +

    This operator performs a memberwise subtraction of both vectors, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator/()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > operator/ (const Vector3< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator /.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Memberwise division by right
    + +
    +
    + +

    ◆ operator/=()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vector3< T > & operator/= (Vector3< T > & left,
    right 
    )
    +
    +related
    +
    + +

    Overload of binary operator /=.

    +

    This operator performs a memberwise division by right, and assigns the result to left.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a scalar value)
    +
    +
    +
    Returns
    Reference to left
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const Vector3< T > & left,
    const Vector3< T > & right 
    )
    +
    +related
    +
    + +

    Overload of binary operator ==.

    +

    This operator compares strict equality between two vectors.

    +
    Parameters
    + + + +
    leftLeft operand (a vector)
    rightRight operand (a vector)
    +
    +
    +
    Returns
    True if left is equal to right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ x

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Vector3< T >::x
    +
    + +

    X coordinate of the vector.

    + +

    Definition at line 76 of file Vector3.hpp.

    + +
    +
    + +

    ◆ y

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Vector3< T >::y
    +
    + +

    Y coordinate of the vector.

    + +

    Definition at line 77 of file Vector3.hpp.

    + +
    +
    + +

    ◆ z

    + +
    +
    +
    +template<typename T>
    + + + + +
    T sf::Vector3< T >::z
    +
    + +

    Z coordinate of the vector.

    + +

    Definition at line 78 of file Vector3.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vertex-members.html b/SFML/doc/html/classsf_1_1Vertex-members.html new file mode 100644 index 0000000..1ad4a05 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vertex-members.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Vertex Member List
    +
    +
    + +

    This is the complete list of members for sf::Vertex, including all inherited members.

    + + + + + + + + + +
    colorsf::Vertex
    positionsf::Vertex
    texCoordssf::Vertex
    Vertex()sf::Vertex
    Vertex(const Vector2f &thePosition)sf::Vertex
    Vertex(const Vector2f &thePosition, const Color &theColor)sf::Vertex
    Vertex(const Vector2f &thePosition, const Vector2f &theTexCoords)sf::Vertex
    Vertex(const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)sf::Vertex
    + + + + diff --git a/SFML/doc/html/classsf_1_1Vertex.html b/SFML/doc/html/classsf_1_1Vertex.html new file mode 100644 index 0000000..86dd767 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Vertex.html @@ -0,0 +1,333 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Define a point with color and texture coordinates. + More...

    + +

    #include <Vertex.hpp>

    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Vertex ()
     Default constructor. More...
     
     Vertex (const Vector2f &thePosition)
     Construct the vertex from its position. More...
     
     Vertex (const Vector2f &thePosition, const Color &theColor)
     Construct the vertex from its position and color. More...
     
     Vertex (const Vector2f &thePosition, const Vector2f &theTexCoords)
     Construct the vertex from its position and texture coordinates. More...
     
     Vertex (const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)
     Construct the vertex from its position, color and texture coordinates. More...
     
    + + + + + + + + + + +

    +Public Attributes

    Vector2f position
     2D position of the vertex More...
     
    Color color
     Color of the vertex. More...
     
    Vector2f texCoords
     Coordinates of the texture's pixel to map to the vertex. More...
     
    +

    Detailed Description

    +

    Define a point with color and texture coordinates.

    +

    A vertex is an improved point.

    +

    It has a position and other extra attributes that will be used for drawing: in SFML, vertices also have a color and a pair of texture coordinates.

    +

    The vertex is the building block of drawing. Everything which is visible on screen is made of vertices. They are grouped as 2D primitives (triangles, quads, ...), and these primitives are grouped to create even more complex 2D entities such as sprites, texts, etc.

    +

    If you use the graphical entities of SFML (sprite, text, shape) you won't have to deal with vertices directly. But if you want to define your own 2D entities, such as tiled maps or particle systems, using vertices will allow you to get maximum performances.

    +

    Example:

    // define a 100x100 square, red, with a 10x10 texture mapped on it
    sf::Vertex vertices[] =
    {
    };
    // draw it
    window.draw(vertices, 4, sf::Quads);

    Note: although texture coordinates are supposed to be an integer amount of pixels, their type is float because of some buggy graphics drivers that are not able to process integer coordinates correctly.

    +
    See also
    sf::VertexArray
    + +

    Definition at line 42 of file Vertex.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Vertex() [1/5]

    + +
    +
    + + + + + + + +
    sf::Vertex::Vertex ()
    +
    + +

    Default constructor.

    + +
    +
    + +

    ◆ Vertex() [2/5]

    + +
    +
    + + + + + + + + +
    sf::Vertex::Vertex (const Vector2fthePosition)
    +
    + +

    Construct the vertex from its position.

    +

    The vertex color is white and texture coordinates are (0, 0).

    +
    Parameters
    + + +
    thePositionVertex position
    +
    +
    + +
    +
    + +

    ◆ Vertex() [3/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::Vertex::Vertex (const Vector2fthePosition,
    const ColortheColor 
    )
    +
    + +

    Construct the vertex from its position and color.

    +

    The texture coordinates are (0, 0).

    +
    Parameters
    + + + +
    thePositionVertex position
    theColorVertex color
    +
    +
    + +
    +
    + +

    ◆ Vertex() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::Vertex::Vertex (const Vector2fthePosition,
    const Vector2ftheTexCoords 
    )
    +
    + +

    Construct the vertex from its position and texture coordinates.

    +

    The vertex color is white.

    +
    Parameters
    + + + +
    thePositionVertex position
    theTexCoordsVertex texture coordinates
    +
    +
    + +
    +
    + +

    ◆ Vertex() [5/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Vertex::Vertex (const Vector2fthePosition,
    const ColortheColor,
    const Vector2ftheTexCoords 
    )
    +
    + +

    Construct the vertex from its position, color and texture coordinates.

    +
    Parameters
    + + + + +
    thePositionVertex position
    theColorVertex color
    theTexCoordsVertex texture coordinates
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ color

    + +
    +
    + + + + +
    Color sf::Vertex::color
    +
    + +

    Color of the vertex.

    + +

    Definition at line 98 of file Vertex.hpp.

    + +
    +
    + +

    ◆ position

    + +
    +
    + + + + +
    Vector2f sf::Vertex::position
    +
    + +

    2D position of the vertex

    + +

    Definition at line 97 of file Vertex.hpp.

    + +
    +
    + +

    ◆ texCoords

    + +
    +
    + + + + +
    Vector2f sf::Vertex::texCoords
    +
    + +

    Coordinates of the texture's pixel to map to the vertex.

    + +

    Definition at line 99 of file Vertex.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1VertexArray-members.html b/SFML/doc/html/classsf_1_1VertexArray-members.html new file mode 100644 index 0000000..312898c --- /dev/null +++ b/SFML/doc/html/classsf_1_1VertexArray-members.html @@ -0,0 +1,73 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::VertexArray Member List
    +
    +
    + +

    This is the complete list of members for sf::VertexArray, including all inherited members.

    + + + + + + + + + + + + + +
    append(const Vertex &vertex)sf::VertexArray
    clear()sf::VertexArray
    getBounds() constsf::VertexArray
    getPrimitiveType() constsf::VertexArray
    getVertexCount() constsf::VertexArray
    operator[](std::size_t index)sf::VertexArray
    operator[](std::size_t index) constsf::VertexArray
    resize(std::size_t vertexCount)sf::VertexArray
    setPrimitiveType(PrimitiveType type)sf::VertexArray
    VertexArray()sf::VertexArray
    VertexArray(PrimitiveType type, std::size_t vertexCount=0)sf::VertexArrayexplicit
    ~Drawable()sf::Drawableinlinevirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1VertexArray.html b/SFML/doc/html/classsf_1_1VertexArray.html new file mode 100644 index 0000000..03111a2 --- /dev/null +++ b/SFML/doc/html/classsf_1_1VertexArray.html @@ -0,0 +1,413 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::VertexArray Class Reference
    +
    +
    + +

    Define a set of one or more 2D primitives. + More...

    + +

    #include <VertexArray.hpp>

    +
    +Inheritance diagram for sf::VertexArray:
    +
    +
    + + +sf::Drawable + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     VertexArray ()
     Default constructor. More...
     
     VertexArray (PrimitiveType type, std::size_t vertexCount=0)
     Construct the vertex array with a type and an initial number of vertices. More...
     
    std::size_t getVertexCount () const
     Return the vertex count. More...
     
    Vertexoperator[] (std::size_t index)
     Get a read-write access to a vertex by its index. More...
     
    const Vertexoperator[] (std::size_t index) const
     Get a read-only access to a vertex by its index. More...
     
    void clear ()
     Clear the vertex array. More...
     
    void resize (std::size_t vertexCount)
     Resize the vertex array. More...
     
    void append (const Vertex &vertex)
     Add a vertex to the array. More...
     
    void setPrimitiveType (PrimitiveType type)
     Set the type of primitives to draw. More...
     
    PrimitiveType getPrimitiveType () const
     Get the type of primitives drawn by the vertex array. More...
     
    FloatRect getBounds () const
     Compute the bounding rectangle of the vertex array. More...
     
    +

    Detailed Description

    +

    Define a set of one or more 2D primitives.

    +

    sf::VertexArray is a very simple wrapper around a dynamic array of vertices and a primitives type.

    +

    It inherits sf::Drawable, but unlike other drawables it is not transformable.

    +

    Example:

    lines[0].position = sf::Vector2f(10, 0);
    lines[1].position = sf::Vector2f(20, 0);
    lines[2].position = sf::Vector2f(30, 5);
    lines[3].position = sf::Vector2f(40, 2);
    window.draw(lines);
    See also
    sf::Vertex
    + +

    Definition at line 45 of file VertexArray.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ VertexArray() [1/2]

    + +
    +
    + + + + + + + +
    sf::VertexArray::VertexArray ()
    +
    + +

    Default constructor.

    +

    Creates an empty vertex array.

    + +
    +
    + +

    ◆ VertexArray() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    sf::VertexArray::VertexArray (PrimitiveType type,
    std::size_t vertexCount = 0 
    )
    +
    +explicit
    +
    + +

    Construct the vertex array with a type and an initial number of vertices.

    +
    Parameters
    + + + +
    typeType of primitives
    vertexCountInitial number of vertices in the array
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ append()

    + +
    +
    + + + + + + + + +
    void sf::VertexArray::append (const Vertexvertex)
    +
    + +

    Add a vertex to the array.

    +
    Parameters
    + + +
    vertexVertex to add
    +
    +
    + +
    +
    + +

    ◆ clear()

    + +
    +
    + + + + + + + +
    void sf::VertexArray::clear ()
    +
    + +

    Clear the vertex array.

    +

    This function removes all the vertices from the array. It doesn't deallocate the corresponding memory, so that adding new vertices after clearing doesn't involve reallocating all the memory.

    + +
    +
    + +

    ◆ getBounds()

    + +
    +
    + + + + + + + +
    FloatRect sf::VertexArray::getBounds () const
    +
    + +

    Compute the bounding rectangle of the vertex array.

    +

    This function returns the minimal axis-aligned rectangle that contains all the vertices of the array.

    +
    Returns
    Bounding rectangle of the vertex array
    + +
    +
    + +

    ◆ getPrimitiveType()

    + +
    +
    + + + + + + + +
    PrimitiveType sf::VertexArray::getPrimitiveType () const
    +
    + +

    Get the type of primitives drawn by the vertex array.

    +
    Returns
    Primitive type
    + +
    +
    + +

    ◆ getVertexCount()

    + +
    +
    + + + + + + + +
    std::size_t sf::VertexArray::getVertexCount () const
    +
    + +

    Return the vertex count.

    +
    Returns
    Number of vertices in the array
    + +
    +
    + +

    ◆ operator[]() [1/2]

    + +
    +
    + + + + + + + + +
    Vertex& sf::VertexArray::operator[] (std::size_t index)
    +
    + +

    Get a read-write access to a vertex by its index.

    +

    This function doesn't check index, it must be in range [0, getVertexCount() - 1]. The behavior is undefined otherwise.

    +
    Parameters
    + + +
    indexIndex of the vertex to get
    +
    +
    +
    Returns
    Reference to the index-th vertex
    +
    See also
    getVertexCount
    + +
    +
    + +

    ◆ operator[]() [2/2]

    + +
    +
    + + + + + + + + +
    const Vertex& sf::VertexArray::operator[] (std::size_t index) const
    +
    + +

    Get a read-only access to a vertex by its index.

    +

    This function doesn't check index, it must be in range [0, getVertexCount() - 1]. The behavior is undefined otherwise.

    +
    Parameters
    + + +
    indexIndex of the vertex to get
    +
    +
    +
    Returns
    Const reference to the index-th vertex
    +
    See also
    getVertexCount
    + +
    +
    + +

    ◆ resize()

    + +
    +
    + + + + + + + + +
    void sf::VertexArray::resize (std::size_t vertexCount)
    +
    + +

    Resize the vertex array.

    +

    If vertexCount is greater than the current size, the previous vertices are kept and new (default-constructed) vertices are added. If vertexCount is less than the current size, existing vertices are removed from the array.

    +
    Parameters
    + + +
    vertexCountNew size of the array (number of vertices)
    +
    +
    + +
    +
    + +

    ◆ setPrimitiveType()

    + +
    +
    + + + + + + + + +
    void sf::VertexArray::setPrimitiveType (PrimitiveType type)
    +
    + +

    Set the type of primitives to draw.

    +

    This function defines how the vertices must be interpreted when it's time to draw them:

      +
    • As points
    • +
    • As lines
    • +
    • As triangles
    • +
    • As quads The default primitive type is sf::Points.
    • +
    +
    Parameters
    + + +
    typeType of primitive
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1VertexArray.png b/SFML/doc/html/classsf_1_1VertexArray.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa8145e08770a16fc0871ef2bfbeaa7a4c903aa GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^NkAOH!3-p?o(z};q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg`#oJ8Ln;{G&V8GASb@j2zxT@b`X{Q2 zjM9^iPIS{QE!ow<|Cm`^f4`^Z(v3{y};hUyyf2E$M^-l zo?71V=ZD(dQa$PGR;AzWd~J|j^yE~%+V=gCA9QbZ35D*xuz9<|){A%k7@SHy^*CL0 z>8fAbXK{pHZBTOxHC^ysA;>Fp1;f0TtOj9^1=n9MI974QN#bk;^CNGqEF}h|SsV=w zYD@|XIvF@Jlo*&`-2Ytyf|A-S2}?k7{0h^)+lysoFJheY&i{tOD}@e@9RbeQKCgGp zxtzPWwy5(?)y|cI$0N7hoV56jS;wCIc)puT*?8`+am)VD=h?+mSMfbO*;_t0(4Eo7DP-}TmpQI8SM7God42A4 w;s3jj1;2G3SBUv~zTfh|+I?(_N=6~}HVZ`)RHlkm0;7w;)78&qol`;+0CHI2`~Uy| literal 0 HcmV?d00001 diff --git a/SFML/doc/html/classsf_1_1VertexBuffer-members.html b/SFML/doc/html/classsf_1_1VertexBuffer-members.html new file mode 100644 index 0000000..72b8d91 --- /dev/null +++ b/SFML/doc/html/classsf_1_1VertexBuffer-members.html @@ -0,0 +1,89 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::VertexBuffer Member List
    +
    +
    + +

    This is the complete list of members for sf::VertexBuffer, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bind(const VertexBuffer *vertexBuffer)sf::VertexBufferstatic
    create(std::size_t vertexCount)sf::VertexBuffer
    Dynamic enum valuesf::VertexBuffer
    getNativeHandle() constsf::VertexBuffer
    getPrimitiveType() constsf::VertexBuffer
    getUsage() constsf::VertexBuffer
    getVertexCount() constsf::VertexBuffer
    GlResource()sf::GlResourceprivate
    isAvailable()sf::VertexBufferstatic
    operator=(const VertexBuffer &right)sf::VertexBuffer
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
    setPrimitiveType(PrimitiveType type)sf::VertexBuffer
    setUsage(Usage usage)sf::VertexBuffer
    Static enum valuesf::VertexBuffer
    Stream enum valuesf::VertexBuffer
    swap(VertexBuffer &right)sf::VertexBuffer
    update(const Vertex *vertices)sf::VertexBuffer
    update(const Vertex *vertices, std::size_t vertexCount, unsigned int offset)sf::VertexBuffer
    update(const VertexBuffer &vertexBuffer)sf::VertexBuffer
    Usage enum namesf::VertexBuffer
    VertexBuffer()sf::VertexBuffer
    VertexBuffer(PrimitiveType type)sf::VertexBufferexplicit
    VertexBuffer(Usage usage)sf::VertexBufferexplicit
    VertexBuffer(PrimitiveType type, Usage usage)sf::VertexBuffer
    VertexBuffer(const VertexBuffer &copy)sf::VertexBuffer
    ~Drawable()sf::Drawableinlinevirtual
    ~GlResource()sf::GlResourceprivate
    ~VertexBuffer()sf::VertexBuffer
    + + + + diff --git a/SFML/doc/html/classsf_1_1VertexBuffer.html b/SFML/doc/html/classsf_1_1VertexBuffer.html new file mode 100644 index 0000000..fc4cdc1 --- /dev/null +++ b/SFML/doc/html/classsf_1_1VertexBuffer.html @@ -0,0 +1,772 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Vertex buffer storage for one or more 2D primitives. + More...

    + +

    #include <VertexBuffer.hpp>

    +
    +Inheritance diagram for sf::VertexBuffer:
    +
    +
    + + +sf::Drawable +sf::GlResource + +
    + + + + + +

    +Public Types

    enum  Usage { Stream, +Dynamic, +Static + }
     Usage specifiers. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     VertexBuffer ()
     Default constructor. More...
     
     VertexBuffer (PrimitiveType type)
     Construct a VertexBuffer with a specific PrimitiveType. More...
     
     VertexBuffer (Usage usage)
     Construct a VertexBuffer with a specific usage specifier. More...
     
     VertexBuffer (PrimitiveType type, Usage usage)
     Construct a VertexBuffer with a specific PrimitiveType and usage specifier. More...
     
     VertexBuffer (const VertexBuffer &copy)
     Copy constructor. More...
     
     ~VertexBuffer ()
     Destructor. More...
     
    bool create (std::size_t vertexCount)
     Create the vertex buffer. More...
     
    std::size_t getVertexCount () const
     Return the vertex count. More...
     
    bool update (const Vertex *vertices)
     Update the whole buffer from an array of vertices. More...
     
    bool update (const Vertex *vertices, std::size_t vertexCount, unsigned int offset)
     Update a part of the buffer from an array of vertices. More...
     
    bool update (const VertexBuffer &vertexBuffer)
     Copy the contents of another buffer into this buffer. More...
     
    VertexBufferoperator= (const VertexBuffer &right)
     Overload of assignment operator. More...
     
    void swap (VertexBuffer &right)
     Swap the contents of this vertex buffer with those of another. More...
     
    unsigned int getNativeHandle () const
     Get the underlying OpenGL handle of the vertex buffer. More...
     
    void setPrimitiveType (PrimitiveType type)
     Set the type of primitives to draw. More...
     
    PrimitiveType getPrimitiveType () const
     Get the type of primitives drawn by the vertex buffer. More...
     
    void setUsage (Usage usage)
     Set the usage specifier of this vertex buffer. More...
     
    Usage getUsage () const
     Get the usage specifier of this vertex buffer. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static void bind (const VertexBuffer *vertexBuffer)
     Bind a vertex buffer for rendering. More...
     
    static bool isAvailable ()
     Tell whether or not the system supports vertex buffers. More...
     
    + + + + +

    +Static Private Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    +

    Detailed Description

    +

    Vertex buffer storage for one or more 2D primitives.

    +

    sf::VertexBuffer is a simple wrapper around a dynamic buffer of vertices and a primitives type.

    +

    Unlike sf::VertexArray, the vertex data is stored in graphics memory.

    +

    In situations where a large amount of vertex data would have to be transferred from system memory to graphics memory every frame, using sf::VertexBuffer can help. By using a sf::VertexBuffer, data that has not been changed between frames does not have to be re-transferred from system to graphics memory as would be the case with sf::VertexArray. If data transfer is a bottleneck, this can lead to performance gains.

    +

    Using sf::VertexBuffer, the user also has the ability to only modify a portion of the buffer in graphics memory. This way, a large buffer can be allocated at the start of the application and only the applicable portions of it need to be updated during the course of the application. This allows the user to take full control of data transfers between system and graphics memory if they need to.

    +

    In special cases, the user can make use of multiple threads to update vertex data in multiple distinct regions of the buffer simultaneously. This might make sense when e.g. the position of multiple objects has to be recalculated very frequently. The computation load can be spread across multiple threads as long as there are no other data dependencies.

    +

    Simultaneous updates to the vertex buffer are not guaranteed to be carried out by the driver in any specific order. Updating the same region of the buffer from multiple threads will not cause undefined behaviour, however the final state of the buffer will be unpredictable.

    +

    Simultaneous updates of distinct non-overlapping regions of the buffer are also not guaranteed to complete in a specific order. However, in this case the user can make sure to synchronize the writer threads at well-defined points in their code. The driver will make sure that all pending data transfers complete before the vertex buffer is sourced by the rendering pipeline.

    +

    It inherits sf::Drawable, but unlike other drawables it is not transformable.

    +

    Example:

    sf::Vertex vertices[15];
    ...
    sf::VertexBuffer triangles(sf::Triangles);
    triangles.create(15);
    triangles.update(vertices);
    ...
    window.draw(triangles);
    See also
    sf::Vertex, sf::VertexArray
    + +

    Definition at line 46 of file VertexBuffer.hpp.

    +

    Member Enumeration Documentation

    + +

    ◆ Usage

    + +
    +
    + + + + +
    enum sf::VertexBuffer::Usage
    +
    + +

    Usage specifiers.

    +

    If data is going to be updated once or more every frame, set the usage to Stream. If data is going to be set once and used for a long time without being modified, set the usage to Static. For everything else Dynamic should be a good compromise.

    + + + + +
    Enumerator
    Stream 

    Constantly changing data.

    +
    Dynamic 

    Occasionally changing data.

    +
    Static 

    Rarely changing data.

    +
    + +

    Definition at line 60 of file VertexBuffer.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ VertexBuffer() [1/5]

    + +
    +
    + + + + + + + +
    sf::VertexBuffer::VertexBuffer ()
    +
    + +

    Default constructor.

    +

    Creates an empty vertex buffer.

    + +
    +
    + +

    ◆ VertexBuffer() [2/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::VertexBuffer::VertexBuffer (PrimitiveType type)
    +
    +explicit
    +
    + +

    Construct a VertexBuffer with a specific PrimitiveType.

    +

    Creates an empty vertex buffer and sets its primitive type to type.

    +
    Parameters
    + + +
    typeType of primitive
    +
    +
    + +
    +
    + +

    ◆ VertexBuffer() [3/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::VertexBuffer::VertexBuffer (Usage usage)
    +
    +explicit
    +
    + +

    Construct a VertexBuffer with a specific usage specifier.

    +

    Creates an empty vertex buffer and sets its usage to usage.

    +
    Parameters
    + + +
    usageUsage specifier
    +
    +
    + +
    +
    + +

    ◆ VertexBuffer() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::VertexBuffer::VertexBuffer (PrimitiveType type,
    Usage usage 
    )
    +
    + +

    Construct a VertexBuffer with a specific PrimitiveType and usage specifier.

    +

    Creates an empty vertex buffer and sets its primitive type to type and usage to usage.

    +
    Parameters
    + + + +
    typeType of primitive
    usageUsage specifier
    +
    +
    + +
    +
    + +

    ◆ VertexBuffer() [5/5]

    + +
    +
    + + + + + + + + +
    sf::VertexBuffer::VertexBuffer (const VertexBuffercopy)
    +
    + +

    Copy constructor.

    +
    Parameters
    + + +
    copyinstance to copy
    +
    +
    + +
    +
    + +

    ◆ ~VertexBuffer()

    + +
    +
    + + + + + + + +
    sf::VertexBuffer::~VertexBuffer ()
    +
    + +

    Destructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ bind()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void sf::VertexBuffer::bind (const VertexBuffervertexBuffer)
    +
    +static
    +
    + +

    Bind a vertex buffer for rendering.

    +

    This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::VertexBuffer with OpenGL code.

    +
    ...
    sf::VertexBuffer::bind(&vb1);
    // draw OpenGL stuff that use vb1...
    // draw OpenGL stuff that use vb2...
    // draw OpenGL stuff that use no vertex buffer...
    Parameters
    + + +
    vertexBufferPointer to the vertex buffer to bind, can be null to use no vertex buffer
    +
    +
    + +
    +
    + +

    ◆ create()

    + +
    +
    + + + + + + + + +
    bool sf::VertexBuffer::create (std::size_t vertexCount)
    +
    + +

    Create the vertex buffer.

    +

    Creates the vertex buffer and allocates enough graphics memory to hold vertexCount vertices. Any previously allocated memory is freed in the process.

    +

    In order to deallocate previously allocated memory pass 0 as vertexCount. Don't forget to recreate with a non-zero value when graphics memory should be allocated again.

    +
    Parameters
    + + +
    vertexCountNumber of vertices worth of memory to allocate
    +
    +
    +
    Returns
    True if creation was successful
    + +
    +
    + +

    ◆ getNativeHandle()

    + +
    +
    + + + + + + + +
    unsigned int sf::VertexBuffer::getNativeHandle () const
    +
    + +

    Get the underlying OpenGL handle of the vertex buffer.

    +

    You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

    +
    Returns
    OpenGL handle of the vertex buffer or 0 if not yet created
    + +
    +
    + +

    ◆ getPrimitiveType()

    + +
    +
    + + + + + + + +
    PrimitiveType sf::VertexBuffer::getPrimitiveType () const
    +
    + +

    Get the type of primitives drawn by the vertex buffer.

    +
    Returns
    Primitive type
    + +
    +
    + +

    ◆ getUsage()

    + +
    +
    + + + + + + + +
    Usage sf::VertexBuffer::getUsage () const
    +
    + +

    Get the usage specifier of this vertex buffer.

    +
    Returns
    Usage specifier
    + +
    +
    + +

    ◆ getVertexCount()

    + +
    +
    + + + + + + + +
    std::size_t sf::VertexBuffer::getVertexCount () const
    +
    + +

    Return the vertex count.

    +
    Returns
    Number of vertices in the vertex buffer
    + +
    +
    + +

    ◆ isAvailable()

    + +
    +
    + + + + + +
    + + + + + + + +
    static bool sf::VertexBuffer::isAvailable ()
    +
    +static
    +
    + +

    Tell whether or not the system supports vertex buffers.

    +

    This function should always be called before using the vertex buffer features. If it returns false, then any attempt to use sf::VertexBuffer will fail.

    +
    Returns
    True if vertex buffers are supported, false otherwise
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    VertexBuffer& sf::VertexBuffer::operator= (const VertexBufferright)
    +
    + +

    Overload of assignment operator.

    +
    Parameters
    + + +
    rightInstance to assign
    +
    +
    +
    Returns
    Reference to self
    + +
    +
    + +

    ◆ setPrimitiveType()

    + +
    +
    + + + + + + + + +
    void sf::VertexBuffer::setPrimitiveType (PrimitiveType type)
    +
    + +

    Set the type of primitives to draw.

    +

    This function defines how the vertices must be interpreted when it's time to draw them.

    +

    The default primitive type is sf::Points.

    +
    Parameters
    + + +
    typeType of primitive
    +
    +
    + +
    +
    + +

    ◆ setUsage()

    + +
    +
    + + + + + + + + +
    void sf::VertexBuffer::setUsage (Usage usage)
    +
    + +

    Set the usage specifier of this vertex buffer.

    +

    This function provides a hint about how this vertex buffer is going to be used in terms of data update frequency.

    +

    After changing the usage specifier, the vertex buffer has to be updated with new data for the usage specifier to take effect.

    +

    The default primitive type is sf::VertexBuffer::Stream.

    +
    Parameters
    + + +
    usageUsage specifier
    +
    +
    + +
    +
    + +

    ◆ swap()

    + +
    +
    + + + + + + + + +
    void sf::VertexBuffer::swap (VertexBufferright)
    +
    + +

    Swap the contents of this vertex buffer with those of another.

    +
    Parameters
    + + +
    rightInstance to swap with
    +
    +
    + +
    +
    + +

    ◆ update() [1/3]

    + +
    +
    + + + + + + + + +
    bool sf::VertexBuffer::update (const Vertexvertices)
    +
    + +

    Update the whole buffer from an array of vertices.

    +

    The vertex array is assumed to have the same size as the created buffer.

    +

    No additional check is performed on the size of the vertex array, passing invalid arguments will lead to undefined behavior.

    +

    This function does nothing if vertices is null or if the buffer was not previously created.

    +
    Parameters
    + + +
    verticesArray of vertices to copy to the buffer
    +
    +
    +
    Returns
    True if the update was successful
    + +
    +
    + +

    ◆ update() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool sf::VertexBuffer::update (const Vertexvertices,
    std::size_t vertexCount,
    unsigned int offset 
    )
    +
    + +

    Update a part of the buffer from an array of vertices.

    +

    offset is specified as the number of vertices to skip from the beginning of the buffer.

    +

    If offset is 0 and vertexCount is equal to the size of the currently created buffer, its whole contents are replaced.

    +

    If offset is 0 and vertexCount is greater than the size of the currently created buffer, a new buffer is created containing the vertex data.

    +

    If offset is 0 and vertexCount is less than the size of the currently created buffer, only the corresponding region is updated.

    +

    If offset is not 0 and offset + vertexCount is greater than the size of the currently created buffer, the update fails.

    +

    No additional check is performed on the size of the vertex array, passing invalid arguments will lead to undefined behavior.

    +
    Parameters
    + + + + +
    verticesArray of vertices to copy to the buffer
    vertexCountNumber of vertices to copy
    offsetOffset in the buffer to copy to
    +
    +
    +
    Returns
    True if the update was successful
    + +
    +
    + +

    ◆ update() [3/3]

    + +
    +
    + + + + + + + + +
    bool sf::VertexBuffer::update (const VertexBuffervertexBuffer)
    +
    + +

    Copy the contents of another buffer into this buffer.

    +
    Parameters
    + + +
    vertexBufferVertex buffer whose contents to copy into this vertex buffer
    +
    +
    +
    Returns
    True if the copy was successful
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1VertexBuffer.png b/SFML/doc/html/classsf_1_1VertexBuffer.png new file mode 100644 index 0000000000000000000000000000000000000000..aa60eb62909a2fa51849a716679ccc0fd01f2af8 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^mw-5cgBeIh+uvRcq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ08a!PbLn;{G&V5_9SwVoUy$gmslRfP%GaY)R9;#vQ}I;)F@MUO z=zBKtleW0;NPN7{c4^96ffpy;4OLejofagNp?>|d*U27SCkpR)62V_Dav@h}7<*`#tZd%vMTUyX9T*rsTxGDI5R9?wE38Uuf3x zlT$aXe!bwtvW}Y}tGM-NPi4(K@-Jd#m$0{joww(ytwC|`tG%*0O{YFf@cfmjnrCzK zcI)-7$#Y!-wEuW5)k)iIyCgM0L-+MLd)GNRkA8o<&=)Kcw^%4@`InoUL&|K_Gn<3Y z2ZdG6xAAtJZ4pqBs;YZdH8xf5|F*}e{-<|+i924+yXnPy>v<}F4Xfj~PWrNa#v~Ql z(b0S3WwLsd_!gXLP4?`zYARNwD?&vU?0t>JV9!{JaO#}m zb>MUFPXOct%0j50^3F!)V89=+@GpZy-o&aBNzU+=hh|J_wv`0RpLJ>PO^zjx-n zhi-Kboxc~WB}&+HnxFf=Z`~R5^}+8#W(jl4@vYE!A92=f`Pyve7&kF9&UX!Lk-I)d z-n!Yjn_Hh-?)54UYrgA;a$c+pewWL?aT3?kKUY>+-PPDrq;(+lisd!m^;+w8*&bPD znDS6JEzoS+`X$ + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::VideoMode Member List
    +
    +
    + +

    This is the complete list of members for sf::VideoMode, including all inherited members.

    + + + + + + + + + + + + + + + +
    bitsPerPixelsf::VideoMode
    getDesktopMode()sf::VideoModestatic
    getFullscreenModes()sf::VideoModestatic
    heightsf::VideoMode
    isValid() constsf::VideoMode
    operator!=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    operator<(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    operator<=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    operator==(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    operator>(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    operator>=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
    VideoMode()sf::VideoMode
    VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel=32)sf::VideoMode
    widthsf::VideoMode
    + + + + diff --git a/SFML/doc/html/classsf_1_1VideoMode.html b/SFML/doc/html/classsf_1_1VideoMode.html new file mode 100644 index 0000000..0ccfdd8 --- /dev/null +++ b/SFML/doc/html/classsf_1_1VideoMode.html @@ -0,0 +1,615 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    VideoMode defines a video mode (width, height, bpp) + More...

    + +

    #include <VideoMode.hpp>

    + + + + + + + + + + + +

    +Public Member Functions

     VideoMode ()
     Default constructor. More...
     
     VideoMode (unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel=32)
     Construct the video mode with its attributes. More...
     
    bool isValid () const
     Tell whether or not the video mode is valid. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static VideoMode getDesktopMode ()
     Get the current desktop video mode. More...
     
    static const std::vector< VideoMode > & getFullscreenModes ()
     Retrieve all the video modes supported in fullscreen mode. More...
     
    + + + + + + + + + + +

    +Public Attributes

    unsigned int width
     Video mode width, in pixels. More...
     
    unsigned int height
     Video mode height, in pixels. More...
     
    unsigned int bitsPerPixel
     Video mode pixel depth, in bits per pixels. More...
     
    + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    bool operator== (const VideoMode &left, const VideoMode &right)
     Overload of == operator to compare two video modes. More...
     
    bool operator!= (const VideoMode &left, const VideoMode &right)
     Overload of != operator to compare two video modes. More...
     
    bool operator< (const VideoMode &left, const VideoMode &right)
     Overload of < operator to compare video modes. More...
     
    bool operator> (const VideoMode &left, const VideoMode &right)
     Overload of > operator to compare video modes. More...
     
    bool operator<= (const VideoMode &left, const VideoMode &right)
     Overload of <= operator to compare video modes. More...
     
    bool operator>= (const VideoMode &left, const VideoMode &right)
     Overload of >= operator to compare video modes. More...
     
    +

    Detailed Description

    +

    VideoMode defines a video mode (width, height, bpp)

    +

    A video mode is defined by a width and a height (in pixels) and a depth (in bits per pixel).

    +

    Video modes are used to setup windows (sf::Window) at creation time.

    +

    The main usage of video modes is for fullscreen mode: indeed you must use one of the valid video modes allowed by the OS (which are defined by what the monitor and the graphics card support), otherwise your window creation will just fail.

    +

    sf::VideoMode provides a static function for retrieving the list of all the video modes supported by the system: getFullscreenModes().

    +

    A custom video mode can also be checked directly for fullscreen compatibility with its isValid() function.

    +

    Additionally, sf::VideoMode provides a static function to get the mode currently used by the desktop: getDesktopMode(). This allows to build windows with the same size or pixel depth as the current resolution.

    +

    Usage example:

    // Display the list of all the video modes available for fullscreen
    std::vector<sf::VideoMode> modes = sf::VideoMode::getFullscreenModes();
    for (std::size_t i = 0; i < modes.size(); ++i)
    {
    sf::VideoMode mode = modes[i];
    std::cout << "Mode #" << i << ": "
    << mode.width << "x" << mode.height << " - "
    << mode.bitsPerPixel << " bpp" << std::endl;
    }
    // Create a window with the same pixel depth as the desktop
    window.create(sf::VideoMode(1024, 768, desktop.bitsPerPixel), "SFML window");
    +

    Definition at line 41 of file VideoMode.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ VideoMode() [1/2]

    + +
    +
    + + + + + + + +
    sf::VideoMode::VideoMode ()
    +
    + +

    Default constructor.

    +

    This constructors initializes all members to 0.

    + +
    +
    + +

    ◆ VideoMode() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::VideoMode::VideoMode (unsigned int modeWidth,
    unsigned int modeHeight,
    unsigned int modeBitsPerPixel = 32 
    )
    +
    + +

    Construct the video mode with its attributes.

    +
    Parameters
    + + + + +
    modeWidthWidth in pixels
    modeHeightHeight in pixels
    modeBitsPerPixelPixel depths in bits per pixel
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getDesktopMode()

    + +
    +
    + + + + + +
    + + + + + + + +
    static VideoMode sf::VideoMode::getDesktopMode ()
    +
    +static
    +
    + +

    Get the current desktop video mode.

    +
    Returns
    Current desktop video mode
    + +
    +
    + +

    ◆ getFullscreenModes()

    + +
    +
    + + + + + +
    + + + + + + + +
    static const std::vector<VideoMode>& sf::VideoMode::getFullscreenModes ()
    +
    +static
    +
    + +

    Retrieve all the video modes supported in fullscreen mode.

    +

    When creating a fullscreen window, the video mode is restricted to be compatible with what the graphics driver and monitor support. This function returns the complete list of all video modes that can be used in fullscreen mode. The returned array is sorted from best to worst, so that the first element will always give the best mode (higher width, height and bits-per-pixel).

    +
    Returns
    Array containing all the supported fullscreen modes
    + +
    +
    + +

    ◆ isValid()

    + +
    +
    + + + + + + + +
    bool sf::VideoMode::isValid () const
    +
    + +

    Tell whether or not the video mode is valid.

    +

    The validity of video modes is only relevant when using fullscreen windows; otherwise any video mode can be used with no restriction.

    +
    Returns
    True if the video mode is valid for fullscreen mode
    + +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator!= (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of != operator to compare two video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if modes are different
    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator< (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of < operator to compare video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if left is lesser than right
    + +
    +
    + +

    ◆ operator<=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator<= (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of <= operator to compare video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if left is lesser or equal than right
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator== (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of == operator to compare two video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if modes are equal
    + +
    +
    + +

    ◆ operator>()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator> (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of > operator to compare video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if left is greater than right
    + +
    +
    + +

    ◆ operator>=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool operator>= (const VideoModeleft,
    const VideoModeright 
    )
    +
    +related
    +
    + +

    Overload of >= operator to compare video modes.

    +
    Parameters
    + + + +
    leftLeft operand (a video mode)
    rightRight operand (a video mode)
    +
    +
    +
    Returns
    True if left is greater or equal than right
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ bitsPerPixel

    + +
    +
    + + + + +
    unsigned int sf::VideoMode::bitsPerPixel
    +
    + +

    Video mode pixel depth, in bits per pixels.

    + +

    Definition at line 104 of file VideoMode.hpp.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    unsigned int sf::VideoMode::height
    +
    + +

    Video mode height, in pixels.

    + +

    Definition at line 103 of file VideoMode.hpp.

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    unsigned int sf::VideoMode::width
    +
    + +

    Video mode width, in pixels.

    + +

    Definition at line 102 of file VideoMode.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1View-members.html b/SFML/doc/html/classsf_1_1View-members.html new file mode 100644 index 0000000..e74af51 --- /dev/null +++ b/SFML/doc/html/classsf_1_1View-members.html @@ -0,0 +1,81 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::View Member List
    +
    +
    + +

    This is the complete list of members for sf::View, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    getCenter() constsf::View
    getInverseTransform() constsf::View
    getRotation() constsf::View
    getSize() constsf::View
    getTransform() constsf::View
    getViewport() constsf::View
    move(float offsetX, float offsetY)sf::View
    move(const Vector2f &offset)sf::View
    reset(const FloatRect &rectangle)sf::View
    rotate(float angle)sf::View
    setCenter(float x, float y)sf::View
    setCenter(const Vector2f &center)sf::View
    setRotation(float angle)sf::View
    setSize(float width, float height)sf::View
    setSize(const Vector2f &size)sf::View
    setViewport(const FloatRect &viewport)sf::View
    View()sf::View
    View(const FloatRect &rectangle)sf::Viewexplicit
    View(const Vector2f &center, const Vector2f &size)sf::View
    zoom(float factor)sf::View
    + + + + diff --git a/SFML/doc/html/classsf_1_1View.html b/SFML/doc/html/classsf_1_1View.html new file mode 100644 index 0000000..0f7ea9b --- /dev/null +++ b/SFML/doc/html/classsf_1_1View.html @@ -0,0 +1,703 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    sf::View Class Reference
    +
    +
    + +

    2D camera that defines what region is shown on screen + More...

    + +

    #include <View.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     View ()
     Default constructor. More...
     
     View (const FloatRect &rectangle)
     Construct the view from a rectangle. More...
     
     View (const Vector2f &center, const Vector2f &size)
     Construct the view from its center and size. More...
     
    void setCenter (float x, float y)
     Set the center of the view. More...
     
    void setCenter (const Vector2f &center)
     Set the center of the view. More...
     
    void setSize (float width, float height)
     Set the size of the view. More...
     
    void setSize (const Vector2f &size)
     Set the size of the view. More...
     
    void setRotation (float angle)
     Set the orientation of the view. More...
     
    void setViewport (const FloatRect &viewport)
     Set the target viewport. More...
     
    void reset (const FloatRect &rectangle)
     Reset the view to the given rectangle. More...
     
    const Vector2fgetCenter () const
     Get the center of the view. More...
     
    const Vector2fgetSize () const
     Get the size of the view. More...
     
    float getRotation () const
     Get the current orientation of the view. More...
     
    const FloatRectgetViewport () const
     Get the target viewport rectangle of the view. More...
     
    void move (float offsetX, float offsetY)
     Move the view relatively to its current position. More...
     
    void move (const Vector2f &offset)
     Move the view relatively to its current position. More...
     
    void rotate (float angle)
     Rotate the view relatively to its current orientation. More...
     
    void zoom (float factor)
     Resize the view rectangle relatively to its current size. More...
     
    const TransformgetTransform () const
     Get the projection transform of the view. More...
     
    const TransformgetInverseTransform () const
     Get the inverse projection transform of the view. More...
     
    +

    Detailed Description

    +

    2D camera that defines what region is shown on screen

    +

    sf::View defines a camera in the 2D scene.

    +

    This is a very powerful concept: you can scroll, rotate or zoom the entire scene without altering the way that your drawable objects are drawn.

    +

    A view is composed of a source rectangle, which defines what part of the 2D scene is shown, and a target viewport, which defines where the contents of the source rectangle will be displayed on the render target (window or texture).

    +

    The viewport allows to map the scene to a custom part of the render target, and can be used for split-screen or for displaying a minimap, for example. If the source rectangle doesn't have the same size as the viewport, its contents will be stretched to fit in.

    +

    To apply a view, you have to assign it to the render target. Then, objects drawn in this render target will be affected by the view until you use another view.

    +

    Usage example:

    sf::View view;
    // Initialize the view to a rectangle located at (100, 100) and with a size of 400x200
    view.reset(sf::FloatRect(100, 100, 400, 200));
    // Rotate it by 45 degrees
    view.rotate(45);
    // Set its target viewport to be half of the window
    view.setViewport(sf::FloatRect(0.f, 0.f, 0.5f, 1.f));
    // Apply it
    window.setView(view);
    // Render stuff
    window.draw(someSprite);
    // Set the default view back
    window.setView(window.getDefaultView());
    // Render stuff not affected by the view
    window.draw(someText);

    See also the note on coordinates and undistorted rendering in sf::Transformable.

    +
    See also
    sf::RenderWindow, sf::RenderTexture
    + +

    Definition at line 43 of file View.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ View() [1/3]

    + +
    +
    + + + + + + + +
    sf::View::View ()
    +
    + +

    Default constructor.

    +

    This constructor creates a default view of (0, 0, 1000, 1000)

    + +
    +
    + +

    ◆ View() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    sf::View::View (const FloatRectrectangle)
    +
    +explicit
    +
    + +

    Construct the view from a rectangle.

    +
    Parameters
    + + +
    rectangleRectangle defining the zone to display
    +
    +
    + +
    +
    + +

    ◆ View() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sf::View::View (const Vector2fcenter,
    const Vector2fsize 
    )
    +
    + +

    Construct the view from its center and size.

    +
    Parameters
    + + + +
    centerCenter of the zone to display
    sizeSize of zone to display
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ getCenter()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::View::getCenter () const
    +
    + +

    Get the center of the view.

    +
    Returns
    Center of the view
    +
    See also
    getSize, setCenter
    + +
    +
    + +

    ◆ getInverseTransform()

    + +
    +
    + + + + + + + +
    const Transform& sf::View::getInverseTransform () const
    +
    + +

    Get the inverse projection transform of the view.

    +

    This function is meant for internal use only.

    +
    Returns
    Inverse of the projection transform defining the view
    +
    See also
    getTransform
    + +
    +
    + +

    ◆ getRotation()

    + +
    +
    + + + + + + + +
    float sf::View::getRotation () const
    +
    + +

    Get the current orientation of the view.

    +
    Returns
    Rotation angle of the view, in degrees
    +
    See also
    setRotation
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    const Vector2f& sf::View::getSize () const
    +
    + +

    Get the size of the view.

    +
    Returns
    Size of the view
    +
    See also
    getCenter, setSize
    + +
    +
    + +

    ◆ getTransform()

    + +
    +
    + + + + + + + +
    const Transform& sf::View::getTransform () const
    +
    + +

    Get the projection transform of the view.

    +

    This function is meant for internal use only.

    +
    Returns
    Projection transform defining the view
    +
    See also
    getInverseTransform
    + +
    +
    + +

    ◆ getViewport()

    + +
    +
    + + + + + + + +
    const FloatRect& sf::View::getViewport () const
    +
    + +

    Get the target viewport rectangle of the view.

    +
    Returns
    Viewport rectangle, expressed as a factor of the target size
    +
    See also
    setViewport
    + +
    +
    + +

    ◆ move() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::View::move (float offsetX,
    float offsetY 
    )
    +
    + +

    Move the view relatively to its current position.

    +
    Parameters
    + + + +
    offsetXX coordinate of the move offset
    offsetYY coordinate of the move offset
    +
    +
    +
    See also
    setCenter, rotate, zoom
    + +
    +
    + +

    ◆ move() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::View::move (const Vector2foffset)
    +
    + +

    Move the view relatively to its current position.

    +
    Parameters
    + + +
    offsetMove offset
    +
    +
    +
    See also
    setCenter, rotate, zoom
    + +
    +
    + +

    ◆ reset()

    + +
    +
    + + + + + + + + +
    void sf::View::reset (const FloatRectrectangle)
    +
    + +

    Reset the view to the given rectangle.

    +

    Note that this function resets the rotation angle to 0.

    +
    Parameters
    + + +
    rectangleRectangle defining the zone to display
    +
    +
    +
    See also
    setCenter, setSize, setRotation
    + +
    +
    + +

    ◆ rotate()

    + +
    +
    + + + + + + + + +
    void sf::View::rotate (float angle)
    +
    + +

    Rotate the view relatively to its current orientation.

    +
    Parameters
    + + +
    angleAngle to rotate, in degrees
    +
    +
    +
    See also
    setRotation, move, zoom
    + +
    +
    + +

    ◆ setCenter() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::View::setCenter (float x,
    float y 
    )
    +
    + +

    Set the center of the view.

    +
    Parameters
    + + + +
    xX coordinate of the new center
    yY coordinate of the new center
    +
    +
    +
    See also
    setSize, getCenter
    + +
    +
    + +

    ◆ setCenter() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::View::setCenter (const Vector2fcenter)
    +
    + +

    Set the center of the view.

    +
    Parameters
    + + +
    centerNew center
    +
    +
    +
    See also
    setSize, getCenter
    + +
    +
    + +

    ◆ setRotation()

    + +
    +
    + + + + + + + + +
    void sf::View::setRotation (float angle)
    +
    + +

    Set the orientation of the view.

    +

    The default rotation of a view is 0 degree.

    +
    Parameters
    + + +
    angleNew angle, in degrees
    +
    +
    +
    See also
    getRotation
    + +
    +
    + +

    ◆ setSize() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::View::setSize (float width,
    float height 
    )
    +
    + +

    Set the size of the view.

    +
    Parameters
    + + + +
    widthNew width of the view
    heightNew height of the view
    +
    +
    +
    See also
    setCenter, getCenter
    + +
    +
    + +

    ◆ setSize() [2/2]

    + +
    +
    + + + + + + + + +
    void sf::View::setSize (const Vector2fsize)
    +
    + +

    Set the size of the view.

    +
    Parameters
    + + +
    sizeNew size
    +
    +
    +
    See also
    setCenter, getCenter
    + +
    +
    + +

    ◆ setViewport()

    + +
    +
    + + + + + + + + +
    void sf::View::setViewport (const FloatRectviewport)
    +
    + +

    Set the target viewport.

    +

    The viewport is the rectangle into which the contents of the view are displayed, expressed as a factor (between 0 and 1) of the size of the RenderTarget to which the view is applied. For example, a view which takes the left side of the target would be defined with View.setViewport(sf::FloatRect(0, 0, 0.5, 1)). By default, a view has a viewport which covers the entire target.

    +
    Parameters
    + + +
    viewportNew viewport rectangle
    +
    +
    +
    See also
    getViewport
    + +
    +
    + +

    ◆ zoom()

    + +
    +
    + + + + + + + + +
    void sf::View::zoom (float factor)
    +
    + +

    Resize the view rectangle relatively to its current size.

    +

    Resizing the view simulates a zoom, as the zone displayed on screen grows or shrinks. factor is a multiplier:

      +
    • 1 keeps the size unchanged
    • +
    • > 1 makes the view bigger (objects appear smaller)
    • +
    • < 1 makes the view smaller (objects appear bigger)
    • +
    +
    Parameters
    + + +
    factorZoom factor to apply
    +
    +
    +
    See also
    setSize, move, rotate
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Window-members.html b/SFML/doc/html/classsf_1_1Window-members.html new file mode 100644 index 0000000..07401b2 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Window-members.html @@ -0,0 +1,98 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    sf::Window Member List
    +
    +
    + +

    This is the complete list of members for sf::Window, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    close()sf::Window
    create(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
    create(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Window
    display()sf::Window
    getPosition() constsf::Window
    getSettings() constsf::Window
    getSize() constsf::Window
    getSystemHandle() constsf::Window
    GlResource()sf::GlResourceprivate
    hasFocus() constsf::Window
    isOpen() constsf::Window
    NonCopyable()sf::NonCopyableinlineprivate
    onCreate()sf::Windowprotectedvirtual
    onResize()sf::Windowprotectedvirtual
    pollEvent(Event &event)sf::Window
    registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
    requestFocus()sf::Window
    setActive(bool active=true) constsf::Window
    setFramerateLimit(unsigned int limit)sf::Window
    setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Window
    setJoystickThreshold(float threshold)sf::Window
    setKeyRepeatEnabled(bool enabled)sf::Window
    setMouseCursor(const Cursor &cursor)sf::Window
    setMouseCursorGrabbed(bool grabbed)sf::Window
    setMouseCursorVisible(bool visible)sf::Window
    setPosition(const Vector2i &position)sf::Window
    setSize(const Vector2u &size)sf::Window
    setTitle(const String &title)sf::Window
    setVerticalSyncEnabled(bool enabled)sf::Window
    setVisible(bool visible)sf::Window
    waitEvent(Event &event)sf::Window
    Window()sf::Window
    Window(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
    Window(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Windowexplicit
    ~GlResource()sf::GlResourceprivate
    ~NonCopyable()sf::NonCopyableinlineprivate
    ~Window()sf::Windowvirtual
    + + + + diff --git a/SFML/doc/html/classsf_1_1Window.html b/SFML/doc/html/classsf_1_1Window.html new file mode 100644 index 0000000..7e03d80 --- /dev/null +++ b/SFML/doc/html/classsf_1_1Window.html @@ -0,0 +1,1130 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
    + +

    Window that serves as a target for OpenGL rendering. + More...

    + +

    #include <Window.hpp>

    +
    +Inheritance diagram for sf::Window:
    +
    +
    + + +sf::GlResource +sf::NonCopyable +sf::RenderWindow + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Window ()
     Default constructor. More...
     
     Window (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
     Construct a new window. More...
     
     Window (WindowHandle handle, const ContextSettings &settings=ContextSettings())
     Construct the window from an existing control. More...
     
    virtual ~Window ()
     Destructor. More...
     
    void create (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
     Create (or recreate) the window. More...
     
    void create (WindowHandle handle, const ContextSettings &settings=ContextSettings())
     Create (or recreate) the window from an existing control. More...
     
    void close ()
     Close the window and destroy all the attached resources. More...
     
    bool isOpen () const
     Tell whether or not the window is open. More...
     
    const ContextSettingsgetSettings () const
     Get the settings of the OpenGL context of the window. More...
     
    bool pollEvent (Event &event)
     Pop the event on top of the event queue, if any, and return it. More...
     
    bool waitEvent (Event &event)
     Wait for an event and return it. More...
     
    Vector2i getPosition () const
     Get the position of the window. More...
     
    void setPosition (const Vector2i &position)
     Change the position of the window on screen. More...
     
    Vector2u getSize () const
     Get the size of the rendering region of the window. More...
     
    void setSize (const Vector2u &size)
     Change the size of the rendering region of the window. More...
     
    void setTitle (const String &title)
     Change the title of the window. More...
     
    void setIcon (unsigned int width, unsigned int height, const Uint8 *pixels)
     Change the window's icon. More...
     
    void setVisible (bool visible)
     Show or hide the window. More...
     
    void setVerticalSyncEnabled (bool enabled)
     Enable or disable vertical synchronization. More...
     
    void setMouseCursorVisible (bool visible)
     Show or hide the mouse cursor. More...
     
    void setMouseCursorGrabbed (bool grabbed)
     Grab or release the mouse cursor. More...
     
    void setMouseCursor (const Cursor &cursor)
     Set the displayed cursor to a native system cursor. More...
     
    void setKeyRepeatEnabled (bool enabled)
     Enable or disable automatic key-repeat. More...
     
    void setFramerateLimit (unsigned int limit)
     Limit the framerate to a maximum fixed frequency. More...
     
    void setJoystickThreshold (float threshold)
     Change the joystick threshold. More...
     
    bool setActive (bool active=true) const
     Activate or deactivate the window as the current target for OpenGL rendering. More...
     
    void requestFocus ()
     Request the current window to be made the active foreground window. More...
     
    bool hasFocus () const
     Check whether the window has the input focus. More...
     
    void display ()
     Display on screen what has been rendered to the window so far. More...
     
    WindowHandle getSystemHandle () const
     Get the OS-specific handle of the window. More...
     
    + + + + + + + +

    +Protected Member Functions

    virtual void onCreate ()
     Function called after the window has been created. More...
     
    virtual void onResize ()
     Function called after the window has been resized. More...
     
    + + + + +

    +Static Private Member Functions

    static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
     Register a function to be called when a context is destroyed. More...
     
    +

    Detailed Description

    +

    Window that serves as a target for OpenGL rendering.

    +

    sf::Window is the main class of the Window module.

    +

    It defines an OS window that is able to receive an OpenGL rendering.

    +

    A sf::Window can create its own new window, or be embedded into an already existing control using the create(handle) function. This can be useful for embedding an OpenGL rendering area into a view which is part of a bigger GUI with existing windows, controls, etc. It can also serve as embedding an OpenGL rendering area into a window created by another (probably richer) GUI library like Qt or wxWidgets.

    +

    The sf::Window class provides a simple interface for manipulating the window: move, resize, show/hide, control mouse cursor, etc. It also provides event handling through its pollEvent() and waitEvent() functions.

    +

    Note that OpenGL experts can pass their own parameters (antialiasing level, bits for the depth and stencil buffers, etc.) to the OpenGL context attached to the window, with the sf::ContextSettings structure which is passed as an optional argument when creating the window.

    +

    On dual-graphics systems consisting of a low-power integrated GPU and a powerful discrete GPU, the driver picks which GPU will run an SFML application. In order to inform the driver that an SFML application can benefit from being run on the more powerful discrete GPU, SFML_DEFINE_DISCRETE_GPU_PREFERENCE can be placed in a source file that is compiled and linked into the final application. The macro should be placed outside of any scopes in the global namespace.

    +

    Usage example:

    // Declare and create a new window
    sf::Window window(sf::VideoMode(800, 600), "SFML window");
    // Limit the framerate to 60 frames per second (this step is optional)
    window.setFramerateLimit(60);
    // The main loop - ends as soon as the window is closed
    while (window.isOpen())
    {
    // Event processing
    sf::Event event;
    while (window.pollEvent(event))
    {
    // Request for closing the window
    if (event.type == sf::Event::Closed)
    window.close();
    }
    // Activate the window for OpenGL rendering
    window.setActive();
    // OpenGL drawing commands go here...
    // End the current frame and display its contents on screen
    window.display();
    }
    +

    Definition at line 58 of file Window/Window.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Window() [1/3]

    + +
    +
    + + + + + + + +
    sf::Window::Window ()
    +
    + +

    Default constructor.

    +

    This constructor doesn't actually create the window, use the other constructors or call create() to do so.

    + +
    +
    + +

    ◆ Window() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sf::Window::Window (VideoMode mode,
    const Stringtitle,
    Uint32 style = Style::Default,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    + +

    Construct a new window.

    +

    This constructor creates the window with the size and pixel depth defined in mode. An optional style can be passed to customize the look and behavior of the window (borders, title bar, resizable, closable, ...). If style contains Style::Fullscreen, then mode must be a valid video mode.

    +

    The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + + + +
    modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
    titleTitle of the window
    styleWindow style, a bitwise OR combination of sf::Style enumerators
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ Window() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    sf::Window::Window (WindowHandle handle,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    +explicit
    +
    + +

    Construct the window from an existing control.

    +

    Use this constructor if you want to create an OpenGL rendering area into an already existing control.

    +

    The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + +
    handlePlatform-specific handle of the control
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ ~Window()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual sf::Window::~Window ()
    +
    +virtual
    +
    + +

    Destructor.

    +

    Closes the window and frees all the resources attached to it.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ close()

    + +
    +
    + + + + + + + +
    void sf::Window::close ()
    +
    + +

    Close the window and destroy all the attached resources.

    +

    After calling this function, the sf::Window instance remains valid and you can call create() to recreate the window. All other functions such as pollEvent() or display() will still work (i.e. you don't have to test isOpen() every time), and will have no effect on closed windows.

    + +
    +
    + +

    ◆ create() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Window::create (VideoMode mode,
    const Stringtitle,
    Uint32 style = Style::Default,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    + +

    Create (or recreate) the window.

    +

    If the window was already created, it closes it first. If style contains Style::Fullscreen, then mode must be a valid video mode.

    +

    The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + + + +
    modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
    titleTitle of the window
    styleWindow style, a bitwise OR combination of sf::Style enumerators
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void sf::Window::create (WindowHandle handle,
    const ContextSettingssettings = ContextSettings() 
    )
    +
    + +

    Create (or recreate) the window from an existing control.

    +

    Use this function if you want to create an OpenGL rendering area into an already existing control. If the window was already created, it closes it first.

    +

    The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

    +
    Parameters
    + + + +
    handlePlatform-specific handle of the control
    settingsAdditional settings for the underlying OpenGL context
    +
    +
    + +
    +
    + +

    ◆ display()

    + +
    +
    + + + + + + + +
    void sf::Window::display ()
    +
    + +

    Display on screen what has been rendered to the window so far.

    +

    This function is typically called after all OpenGL rendering has been done for the current frame, in order to show it on screen.

    + +
    +
    + +

    ◆ getPosition()

    + +
    +
    + + + + + + + +
    Vector2i sf::Window::getPosition () const
    +
    + +

    Get the position of the window.

    +
    Returns
    Position of the window, in pixels
    +
    See also
    setPosition
    + +
    +
    + +

    ◆ getSettings()

    + +
    +
    + + + + + + + +
    const ContextSettings& sf::Window::getSettings () const
    +
    + +

    Get the settings of the OpenGL context of the window.

    +

    Note that these settings may be different from what was passed to the constructor or the create() function, if one or more settings were not supported. In this case, SFML chose the closest match.

    +
    Returns
    Structure containing the OpenGL context settings
    + +
    +
    + +

    ◆ getSize()

    + +
    +
    + + + + + + + +
    Vector2u sf::Window::getSize () const
    +
    + +

    Get the size of the rendering region of the window.

    +

    The size doesn't include the titlebar and borders of the window.

    +
    Returns
    Size in pixels
    +
    See also
    setSize
    + +
    +
    + +

    ◆ getSystemHandle()

    + +
    +
    + + + + + + + +
    WindowHandle sf::Window::getSystemHandle () const
    +
    + +

    Get the OS-specific handle of the window.

    +

    The type of the returned handle is sf::WindowHandle, which is a typedef to the handle type defined by the OS. You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

    +
    Returns
    System handle of the window
    + +
    +
    + +

    ◆ hasFocus()

    + +
    +
    + + + + + + + +
    bool sf::Window::hasFocus () const
    +
    + +

    Check whether the window has the input focus.

    +

    At any given time, only one window may have the input focus to receive input events such as keystrokes or most mouse events.

    +
    Returns
    True if window has focus, false otherwise
    +
    See also
    requestFocus
    + +
    +
    + +

    ◆ isOpen()

    + +
    +
    + + + + + + + +
    bool sf::Window::isOpen () const
    +
    + +

    Tell whether or not the window is open.

    +

    This function returns whether or not the window exists. Note that a hidden window (setVisible(false)) is open (therefore this function would return true).

    +
    Returns
    True if the window is open, false if it has been closed
    + +
    +
    + +

    ◆ onCreate()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::Window::onCreate ()
    +
    +protectedvirtual
    +
    + +

    Function called after the window has been created.

    +

    This function is called so that derived classes can perform their own specific initialization as soon as the window is created.

    + +

    Reimplemented in sf::RenderWindow.

    + +
    +
    + +

    ◆ onResize()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual void sf::Window::onResize ()
    +
    +protectedvirtual
    +
    + +

    Function called after the window has been resized.

    +

    This function is called so that derived classes can perform custom actions when the size of the window changes.

    + +

    Reimplemented in sf::RenderWindow.

    + +
    +
    + +

    ◆ pollEvent()

    + +
    +
    + + + + + + + + +
    bool sf::Window::pollEvent (Eventevent)
    +
    + +

    Pop the event on top of the event queue, if any, and return it.

    +

    This function is not blocking: if there's no pending event then it will return false and leave event unmodified. Note that more than one event may be present in the event queue, thus you should always call this function in a loop to make sure that you process every pending event.

    sf::Event event;
    while (window.pollEvent(event))
    {
    // process event...
    }
    Parameters
    + + +
    eventEvent to be returned
    +
    +
    +
    Returns
    True if an event was returned, or false if the event queue was empty
    +
    See also
    waitEvent
    + +
    +
    + +

    ◆ requestFocus()

    + +
    +
    + + + + + + + +
    void sf::Window::requestFocus ()
    +
    + +

    Request the current window to be made the active foreground window.

    +

    At any given time, only one window may have the input focus to receive input events such as keystrokes or mouse events. If a window requests focus, it only hints to the operating system, that it would like to be focused. The operating system is free to deny the request. This is not to be confused with setActive().

    +
    See also
    hasFocus
    + +
    +
    + +

    ◆ setActive()

    + +
    +
    + + + + + + + + +
    bool sf::Window::setActive (bool active = true) const
    +
    + +

    Activate or deactivate the window as the current target for OpenGL rendering.

    +

    A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

    +
    Parameters
    + + +
    activeTrue to activate, false to deactivate
    +
    +
    +
    Returns
    True if operation was successful, false otherwise
    + +
    +
    + +

    ◆ setFramerateLimit()

    + +
    +
    + + + + + + + + +
    void sf::Window::setFramerateLimit (unsigned int limit)
    +
    + +

    Limit the framerate to a maximum fixed frequency.

    +

    If a limit is set, the window will use a small delay after each call to display() to ensure that the current frame lasted long enough to match the framerate limit. SFML will try to match the given limit as much as it can, but since it internally uses sf::sleep, whose precision depends on the underlying OS, the results may be a little unprecise as well (for example, you can get 65 FPS when requesting 60).

    +
    Parameters
    + + +
    limitFramerate limit, in frames per seconds (use 0 to disable limit)
    +
    +
    + +
    +
    + +

    ◆ setIcon()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void sf::Window::setIcon (unsigned int width,
    unsigned int height,
    const Uint8 * pixels 
    )
    +
    + +

    Change the window's icon.

    +

    pixels must be an array of width x height pixels in 32-bits RGBA format.

    +

    The OS default icon is used by default.

    +
    Parameters
    + + + + +
    widthIcon's width, in pixels
    heightIcon's height, in pixels
    pixelsPointer to the array of pixels in memory. The pixels are copied, so you need not keep the source alive after calling this function.
    +
    +
    +
    See also
    setTitle
    + +
    +
    + +

    ◆ setJoystickThreshold()

    + +
    +
    + + + + + + + + +
    void sf::Window::setJoystickThreshold (float threshold)
    +
    + +

    Change the joystick threshold.

    +

    The joystick threshold is the value below which no JoystickMoved event will be generated.

    +

    The threshold value is 0.1 by default.

    +
    Parameters
    + + +
    thresholdNew threshold, in the range [0, 100]
    +
    +
    + +
    +
    + +

    ◆ setKeyRepeatEnabled()

    + +
    +
    + + + + + + + + +
    void sf::Window::setKeyRepeatEnabled (bool enabled)
    +
    + +

    Enable or disable automatic key-repeat.

    +

    If key repeat is enabled, you will receive repeated KeyPressed events while keeping a key pressed. If it is disabled, you will only get a single event when the key is pressed.

    +

    Key repeat is enabled by default.

    +
    Parameters
    + + +
    enabledTrue to enable, false to disable
    +
    +
    + +
    +
    + +

    ◆ setMouseCursor()

    + +
    +
    + + + + + + + + +
    void sf::Window::setMouseCursor (const Cursorcursor)
    +
    + +

    Set the displayed cursor to a native system cursor.

    +

    Upon window creation, the arrow cursor is used by default.

    +
    Warning
    The cursor must not be destroyed while in use by the window.
    +
    +Features related to Cursor are not supported on iOS and Android.
    +
    Parameters
    + + +
    cursorNative system cursor type to display
    +
    +
    +
    See also
    sf::Cursor::loadFromSystem
    +
    +sf::Cursor::loadFromPixels
    + +
    +
    + +

    ◆ setMouseCursorGrabbed()

    + +
    +
    + + + + + + + + +
    void sf::Window::setMouseCursorGrabbed (bool grabbed)
    +
    + +

    Grab or release the mouse cursor.

    +

    If set, grabs the mouse cursor inside this window's client area so it may no longer be moved outside its bounds. Note that grabbing is only active while the window has focus.

    +
    Parameters
    + + +
    grabbedTrue to enable, false to disable
    +
    +
    + +
    +
    + +

    ◆ setMouseCursorVisible()

    + +
    +
    + + + + + + + + +
    void sf::Window::setMouseCursorVisible (bool visible)
    +
    + +

    Show or hide the mouse cursor.

    +

    The mouse cursor is visible by default.

    +
    Parameters
    + + +
    visibleTrue to show the mouse cursor, false to hide it
    +
    +
    + +
    +
    + +

    ◆ setPosition()

    + +
    +
    + + + + + + + + +
    void sf::Window::setPosition (const Vector2iposition)
    +
    + +

    Change the position of the window on screen.

    +

    This function only works for top-level windows (i.e. it will be ignored for windows created from the handle of a child window/control).

    +
    Parameters
    + + +
    positionNew position, in pixels
    +
    +
    +
    See also
    getPosition
    + +
    +
    + +

    ◆ setSize()

    + +
    +
    + + + + + + + + +
    void sf::Window::setSize (const Vector2usize)
    +
    + +

    Change the size of the rendering region of the window.

    +
    Parameters
    + + +
    sizeNew size, in pixels
    +
    +
    +
    See also
    getSize
    + +
    +
    + +

    ◆ setTitle()

    + +
    +
    + + + + + + + + +
    void sf::Window::setTitle (const Stringtitle)
    +
    + +

    Change the title of the window.

    +
    Parameters
    + + +
    titleNew title
    +
    +
    +
    See also
    setIcon
    + +
    +
    + +

    ◆ setVerticalSyncEnabled()

    + +
    +
    + + + + + + + + +
    void sf::Window::setVerticalSyncEnabled (bool enabled)
    +
    + +

    Enable or disable vertical synchronization.

    +

    Activating vertical synchronization will limit the number of frames displayed to the refresh rate of the monitor. This can avoid some visual artifacts, and limit the framerate to a good value (but not constant across different computers).

    +

    Vertical synchronization is disabled by default.

    +
    Parameters
    + + +
    enabledTrue to enable v-sync, false to deactivate it
    +
    +
    + +
    +
    + +

    ◆ setVisible()

    + +
    +
    + + + + + + + + +
    void sf::Window::setVisible (bool visible)
    +
    + +

    Show or hide the window.

    +

    The window is shown by default.

    +
    Parameters
    + + +
    visibleTrue to show the window, false to hide it
    +
    +
    + +
    +
    + +

    ◆ waitEvent()

    + +
    +
    + + + + + + + + +
    bool sf::Window::waitEvent (Eventevent)
    +
    + +

    Wait for an event and return it.

    +

    This function is blocking: if there's no pending event then it will wait until an event is received. After this function returns (and no error occurred), the event object is always valid and filled properly. This function is typically used when you have a thread that is dedicated to events handling: you want to make this thread sleep as long as no new event is received.

    sf::Event event;
    if (window.waitEvent(event))
    {
    // process event...
    }
    Parameters
    + + +
    eventEvent to be returned
    +
    +
    +
    Returns
    False if any error occurred
    +
    See also
    pollEvent
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/SFML/doc/html/classsf_1_1Window.png b/SFML/doc/html/classsf_1_1Window.png new file mode 100644 index 0000000000000000000000000000000000000000..75c9ab37d890015916fcc63b3c35ca461995a338 GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0vp^Z-BUigBeI(&iI}Mq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0J3U<-Ln;{G&V9RWlY)TT_VZiL{f+-L zTh?{on~2v_d6r%Eb73-LejI=1%q*uLGiI8yPF~V>WYeT80@J51xm*zGX(c~>uKi^Z zQF-(7XP3hCJ=cE@G5hkbdTmc>0^8}&n{Lj_x$-G+j_>wGDtk{G->hhS?JPUzdZSCo4i{V0rSe>1_nKLByvTBUDhSlc4=Sy>TP3$}UY;l-v(aogLZU@_` zy5GEaewtm9Ht+PcO(!Sk&e8v9ph99?ld^|5lC zZBzaHnU?8(Js%iKk9Vw5ncH^S>(b92 zwd}NOlRU1SS)C1_TiF@xp2xh3^t$W2#bp%RpHuaQVw&tDOS@(5ko6X2=x_ED?#YKlNd%u{;xow+KIpO~F*y+p*j(t7< zrue3fsqNRD|IFg%YH#v1`51KU3` z8*nL~{P%|^#d^}4yQMO>7pB-sGk@tk&Ge;%cpM{Xyt({`p>Z{PgMT6@A+lyP0z=nx zhmHex(9KM)*5B@vxHjGTS*BPU^#6Nn%63jWud6@bo%ZV57d~z7V+mH{6aTLHdY^f} zKl*9RY}akq^kVz8Ppm8M^)B>X;k#`9w)>goo;ORR_0!F)`i`c?PSiM1J^igqe42E6 zdfCm6Kpp2l+ot~Tx~Vh&*zFxs4@#_`?6%vz=5*ms1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/SFML/doc/html/deprecated.html b/SFML/doc/html/deprecated.html new file mode 100644 index 0000000..1868eae --- /dev/null +++ b/SFML/doc/html/deprecated.html @@ -0,0 +1,94 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Deprecated List
    +
    +
    +
    +
    Class sf::Event::MouseWheelEvent
    +
    This event is deprecated and potentially inaccurate. Use MouseWheelScrollEvent instead.
    +
    Member sf::Keyboard::BackSlash
    +
    Use Backslash instead
    +
    Member sf::Keyboard::BackSpace
    +
    Use Backspace instead
    +
    Member sf::Keyboard::Dash
    +
    Use Hyphen instead
    +
    Member sf::Keyboard::Return
    +
    Use Enter instead
    +
    Member sf::Keyboard::SemiColon
    +
    Use Semicolon instead
    +
    Member sf::LinesStrip
    +
    Use LineStrip instead
    +
    Member sf::RenderTexture::create (unsigned int width, unsigned int height, bool depthBuffer)
    +
    Use create(unsigned int, unsigned int, const ContextSettings&) instead.
    +
    Member sf::RenderWindow::capture () const
    +
    Use a sf::Texture and its sf::Texture::update(const Window&) function and copy its contents into an sf::Image instead.
    +
    Member sf::Shader::setParameter (const std::string &name, const Color &color)
    +
    Use setUniform(const std::string&, const Glsl::Vec4&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, CurrentTextureType)
    +
    Use setUniform(const std::string&, CurrentTextureType) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, const Vector2f &vector)
    +
    Use setUniform(const std::string&, const Glsl::Vec2&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, const Transform &transform)
    +
    Use setUniform(const std::string&, const Glsl::Mat4&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, float x, float y, float z)
    +
    Use setUniform(const std::string&, const Glsl::Vec3&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, float x)
    +
    Use setUniform(const std::string&, float) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, float x, float y)
    +
    Use setUniform(const std::string&, const Glsl::Vec2&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, const Texture &texture)
    +
    Use setUniform(const std::string&, const Texture&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, const Vector3f &vector)
    +
    Use setUniform(const std::string&, const Glsl::Vec3&) instead.
    +
    Member sf::Shader::setParameter (const std::string &name, float x, float y, float z, float w)
    +
    Use setUniform(const std::string&, const Glsl::Vec4&) instead.
    +
    Member sf::Text::getColor () const
    +
    There is now fill and outline colors instead of a single global color. Use getFillColor() or getOutlineColor() instead.
    +
    Member sf::Text::setColor (const Color &color)
    +
    There is now fill and outline colors instead of a single global color. Use setFillColor() or setOutlineColor() instead.
    +
    Member sf::TrianglesFan
    +
    Use TriangleFan instead
    +
    Member sf::TrianglesStrip
    +
    Use TriangleStrip instead
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html b/SFML/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html new file mode 100644 index 0000000..50ac228 --- /dev/null +++ b/SFML/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Window Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html b/SFML/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html new file mode 100644 index 0000000..6c34f0e --- /dev/null +++ b/SFML/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    System Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_89e9fb32471ae291b179a889144513db.html b/SFML/doc/html/dir_89e9fb32471ae291b179a889144513db.html new file mode 100644 index 0000000..1cfadfe --- /dev/null +++ b/SFML/doc/html/dir_89e9fb32471ae291b179a889144513db.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Network Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html b/SFML/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html new file mode 100644 index 0000000..60f4465 --- /dev/null +++ b/SFML/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SFML Directory Reference
    +
    +
    + + +

    +Directories

    + + + + +

    +Files

    file  GpuPreference.hpp [code]
     Headers.
     
    +
    + + + + diff --git a/SFML/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/SFML/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..3eed7dd --- /dev/null +++ b/SFML/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    include Directory Reference
    +
    +
    + + +

    +Directories

    +
    + + + + diff --git a/SFML/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html b/SFML/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html new file mode 100644 index 0000000..172140c --- /dev/null +++ b/SFML/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Audio Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_e68e8157741866f444e17edd764ebbae.html b/SFML/doc/html/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..66ad8e9 --- /dev/null +++ b/SFML/doc/html/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    doc Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html b/SFML/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html new file mode 100644 index 0000000..96ea9a1 --- /dev/null +++ b/SFML/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Graphics Directory Reference
    +
    +
    +
    + + + + diff --git a/SFML/doc/html/doc.png b/SFML/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/SFML/doc/html/doxygen.css b/SFML/doc/html/doxygen.css new file mode 100644 index 0000000..9c2fc6a --- /dev/null +++ b/SFML/doc/html/doxygen.css @@ -0,0 +1,1450 @@ +/* The standard CSS for doxygen */ + +/* @group Heading Levels */ + +div.contents .textblock h1 { + text-align: left; + font-size: 20pt; + font-weight: normal; + margin-top: 1.5em; + padding: 0 0 0.4em 0; + border-bottom: 1px solid #999; + border-top-width: 0; + border-left-width: 0; + border-right-width: 0; + background-color: transparent; +} + +h1.groupheader { + font-size: 150%; +} + +.title { + font-size: 20pt; + font-weight: normal; + margin: 10px 2px; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex { + margin-bottom: 1em; +} + +div.qindex, div.navtab{ + background-color: #eee; + border: 1px solid #999; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +a.el { + padding: 1px; + text-decoration: none; + color: #577E25; +} + +a.el:hover { + text-decoration: underline; +} + +pre.fragment { + /*border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%;*/ + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 10pt; + padding: 0.5em 1em; + background-color: #f5f5f5; + border: 1px solid #bbb; + border-radius(5px); +} + +div.fragment { + /*margin: 0 0 0 5px; + padding: 0.5em 1em; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 10pt; + background-color: #eef7e3; + border-left: 3px solid #8DC841; + border-right: 0; + border-bottom: 0;*/ + + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 10pt; + padding: 0.5em 1em; + background-color: #f5f5f5; + border: 1px solid #bbb; + border-radius(5px); +} + +div.line { + min-height: 13px; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + line-height: normal; +} + +span.lineno { + padding-right: 4px; + text-align: right; + background-color: #E8E8E8; + white-space: pre; +} + +div.ah { + width: 100%; + background-color: #eee; + font-weight: bold; + color: #000; + margin-bottom: 1px; + margin-top: 1px; + border: solid 1px #999; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + width: 950px; + margin: 0 auto; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + display: none; + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + /*box-shadow: 0 0 15px cyan;*/ +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memtitle { + display: none; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + /*margin-bottom: 10px;*/ + margin-right: 5px; + display: table !important; + width: 100%; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #000; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #eee; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + background-color: #FFFFFF; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #bbb; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding: 5px 5px 5px 0; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + /*border-left: 1px solid rgba(0,0,0,0.05);*/ +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table table { + width: 90%; +} + +.memitem table table { + width: auto; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath { + display: none; +} + +.navpath ul { + font-size: 11px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li { + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + color:#364D7C; +} + +.navpath li.navelem a { + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover { + color:#6884BD; +} + +.navpath li.footer { + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary { + font-size: 8pt; + padding-right: 5px; +} + +div.summary a { + white-space: nowrap; + padding: 1px; + text-decoration: none; + color: #577E25; +} + +div.summary a:hover { + text-decoration: underline; +} + +div.ingroups { + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a { + white-space: nowrap; +} + +div.header { + width: 950px; + margin: 2em auto; + border-bottom: 1px solid #999; +} + +dl { + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo { + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img { + border: 0px none; +} + +#projectname { + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief { + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber { + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea { + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image { + text-align: center; +} + +.dotgraph { + text-align: center; +} + +.mscgraph { + text-align: center; +} + +.caption { + font-weight: bold; +} + +div.zoom { + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print { + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + + #doc-content { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* tabs.css */ +.tabs, .tabs2, .tabs3 { + width: 100%; + z-index: 101; + font-size: 11pt; + background-color: #EAF5DB; + border-left: 1px solid #999; + border-right: 1px solid #999; + border-bottom: 1px solid #999; + padding: 0; + margin: 0; +} + +.tabs2 { + font-size: 10pt; +} +.tabs3 { + font-size: 9pt; +} + +#navrow1 .tablist, #navrow2 .tablist, #navrow3 .tablist, #navrow4 .tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + list-style: none; +} + +#navrow1 { + border-top: 1px solid #999; + margin-top: 2em; +} + +#navrow1 .tablist a, #navrow2 .tablist a, #navrow3 .tablist a, #navrow4 .tablist a { + display: block; + margin: 8px 0; + padding: 0 8px; + border-right: 1px solid #bbb; +} + +.tablist li { + margin-bottom: 0 !important; +} + +.tablist li.current a { + font-weight: bold; +} + + + + + +/* SFML css */ +body { + font-family: 'Ubuntu', 'Arial', sans-serif; + line-height: 140%; + margin: 0 0 2em 0; + padding: 0; +} + +#banner-container { + width: 100%; + margin-top: 25px; + border-top: 2px solid #999; + border-bottom: 2px solid #999; + background-color: rgb(140, 200, 65); +} + +#banner { + width: 950px; + height: 60px; + line-height: 54px; + margin: 0 auto; + text-align: center; +} + +#banner #sfml { + display: inline; + vertical-align: top; + margin-left: 15px; + color: #fff; + font-size: 50pt; + text-shadow: rgba(0, 0, 0, 0.5) 1px 1px 5px; +} + +#footer-container { + clear: both; + width: 100%; + margin-top: 50px; + border-top: 1px solid #999; +} + +#footer { + width: 950px; + margin: 10px auto; + text-align: center; + font-size: 10pt; + color: #555; +} + +#footer a { + padding: 1px; + text-decoration: none; + color: rgb(70, 100, 30); +} + +#footer a:hover { + text-decoration: underline; +} + +div.contents, #content { + width: 950px; + margin: 0 auto; + padding: 0; +} + +div.contents h1 { + color: #333; + padding: 0.5em 0; + margin-top: 30px; + margin-bottom: 0; + text-align: center; + font-size: 26pt; + font-weight: normal; +} + +div.contents h2 { + font-size: 20pt; + font-weight: normal; + margin-top: 1.5em; + padding-bottom: 0.4em; + border-bottom: 1px solid #999; +} + +div.contents h3 { + font-size: 16pt; + font-weight: normal; +} + +div.contents p { + color: #333; + text-align: justify; +} + +div.contents a, #content a { + padding: 1px; + text-decoration: none; + color: rgb(70, 100, 30); +} + +div.contents a:hover, #content a:hover { + text-decoration: underline; +} + +div.contents code { + font-size: 11pt; + font-family: Consolas, "Liberation Mono", Courier, monospace; +} + +div.contents pre code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 10pt; + padding: 0.5em 1em; + background-color: #f5f5f5; + border: 1px solid #bbb; +} + +div.contents ul { + list-style-type: square; + list-style-position: outside; + margin: 0 0 0 1.5em; + padding: 0; +} + +div.contents ul li { + color: #333; + margin: 0 0 0.3em 0; +} + + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #8cc445; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; + line-height: normal; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} +.arrow { + cursor: pointer; +} diff --git a/SFML/doc/html/doxygen.png b/SFML/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/SFML/doc/html/dynsections.js b/SFML/doc/html/dynsections.js new file mode 100644 index 0000000..537e3e4 --- /dev/null +++ b/SFML/doc/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     AlResource.hpp
     Audio.hpp
     BlendMode.hpp
     CircleShape.hpp
     Clipboard.hpp
     Clock.hpp
     Color.hpp
     Config.hpp
     Context.hpp
     ContextSettings.hpp
     ConvexShape.hpp
     Cursor.hpp
     Drawable.hpp
     Err.hpp
     Event.hpp
     Audio/Export.hpp
     Graphics/Export.hpp
     Network/Export.hpp
     System/Export.hpp
     Window/Export.hpp
     FileInputStream.hpp
     Font.hpp
     Ftp.hpp
     GlResource.hpp
     Glsl.hpp
     Glyph.hpp
     GpuPreference.hppHeaders
     Graphics.hpp
     Http.hpp
     Image.hpp
     InputSoundFile.hpp
     InputStream.hpp
     IpAddress.hpp
     Joystick.hpp
     Keyboard.hpp
     Listener.hpp
     Lock.hpp
     Main.hpp
     mainpage.hpp
     MemoryInputStream.hpp
     Mouse.hpp
     Music.hpp
     Mutex.hpp
     NativeActivity.hpp
     Network.hpp
     NonCopyable.hpp
     OpenGL.hpp
     OutputSoundFile.hpp
     Packet.hpp
     PrimitiveType.hpp
     Rect.hpp
     RectangleShape.hpp
     RenderStates.hpp
     RenderTarget.hpp
     RenderTexture.hpp
     RenderWindow.hpp
     Sensor.hpp
     Shader.hpp
     Shape.hpp
     Sleep.hpp
     Socket.hpp
     SocketHandle.hpp
     SocketSelector.hpp
     Sound.hpp
     SoundBuffer.hpp
     SoundBufferRecorder.hpp
     SoundFileFactory.hpp
     SoundFileReader.hpp
     SoundFileWriter.hpp
     SoundRecorder.hpp
     SoundSource.hpp
     SoundStream.hpp
     Sprite.hpp
     String.hpp
     System.hpp
     TcpListener.hpp
     TcpSocket.hpp
     Text.hpp
     Texture.hpp
     Thread.hpp
     ThreadLocal.hpp
     ThreadLocalPtr.hpp
     Time.hpp
     Touch.hpp
     Transform.hpp
     Transformable.hpp
     UdpSocket.hpp
     Utf.hpp
     Vector2.hpp
     Vector3.hpp
     Vertex.hpp
     VertexArray.hpp
     VertexBuffer.hpp
     VideoMode.hpp
     View.hpp
     Window/Window.hpp
     Window.hpp
     WindowHandle.hpp
     WindowStyle.hpp
    +
    +
    + + + + diff --git a/SFML/doc/html/folderclosed.png b/SFML/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/SFML/doc/html/functions.html b/SFML/doc/html/functions.html new file mode 100644 index 0000000..67e806f --- /dev/null +++ b/SFML/doc/html/functions.html @@ -0,0 +1,182 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - a -

    +
    + + + + diff --git a/SFML/doc/html/functions_0x7e.html b/SFML/doc/html/functions_0x7e.html new file mode 100644 index 0000000..21e55da --- /dev/null +++ b/SFML/doc/html/functions_0x7e.html @@ -0,0 +1,213 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - ~ -

    +
    + + + + diff --git a/SFML/doc/html/functions_b.html b/SFML/doc/html/functions_b.html new file mode 100644 index 0000000..4c73db3 --- /dev/null +++ b/SFML/doc/html/functions_b.html @@ -0,0 +1,170 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - b -

    +
    + + + + diff --git a/SFML/doc/html/functions_c.html b/SFML/doc/html/functions_c.html new file mode 100644 index 0000000..647306b --- /dev/null +++ b/SFML/doc/html/functions_c.html @@ -0,0 +1,257 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - c -

    +
    + + + + diff --git a/SFML/doc/html/functions_d.html b/SFML/doc/html/functions_d.html new file mode 100644 index 0000000..dd3d631 --- /dev/null +++ b/SFML/doc/html/functions_d.html @@ -0,0 +1,191 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - d -

    +
    + + + + diff --git a/SFML/doc/html/functions_e.html b/SFML/doc/html/functions_e.html new file mode 100644 index 0000000..d7a71ba --- /dev/null +++ b/SFML/doc/html/functions_e.html @@ -0,0 +1,146 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - e -

    +
    + + + + diff --git a/SFML/doc/html/functions_enum.html b/SFML/doc/html/functions_enum.html new file mode 100644 index 0000000..22edf4b --- /dev/null +++ b/SFML/doc/html/functions_enum.html @@ -0,0 +1,114 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    + + + + diff --git a/SFML/doc/html/functions_eval.html b/SFML/doc/html/functions_eval.html new file mode 100644 index 0000000..a815e0d --- /dev/null +++ b/SFML/doc/html/functions_eval.html @@ -0,0 +1,123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - a -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_b.html b/SFML/doc/html/functions_eval_b.html new file mode 100644 index 0000000..fef9168 --- /dev/null +++ b/SFML/doc/html/functions_eval_b.html @@ -0,0 +1,129 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - b -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_c.html b/SFML/doc/html/functions_eval_c.html new file mode 100644 index 0000000..dc6e999 --- /dev/null +++ b/SFML/doc/html/functions_eval_c.html @@ -0,0 +1,137 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - c -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_d.html b/SFML/doc/html/functions_eval_d.html new file mode 100644 index 0000000..94f7fce --- /dev/null +++ b/SFML/doc/html/functions_eval_d.html @@ -0,0 +1,147 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - d -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_e.html b/SFML/doc/html/functions_eval_e.html new file mode 100644 index 0000000..c44f684 --- /dev/null +++ b/SFML/doc/html/functions_eval_e.html @@ -0,0 +1,119 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - e -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_f.html b/SFML/doc/html/functions_eval_f.html new file mode 100644 index 0000000..507a279 --- /dev/null +++ b/SFML/doc/html/functions_eval_f.html @@ -0,0 +1,164 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - f -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_g.html b/SFML/doc/html/functions_eval_g.html new file mode 100644 index 0000000..1b6380f --- /dev/null +++ b/SFML/doc/html/functions_eval_g.html @@ -0,0 +1,116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - g -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_h.html b/SFML/doc/html/functions_eval_h.html new file mode 100644 index 0000000..eae17b4 --- /dev/null +++ b/SFML/doc/html/functions_eval_h.html @@ -0,0 +1,119 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - h -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_i.html b/SFML/doc/html/functions_eval_i.html new file mode 100644 index 0000000..cc86bf1 --- /dev/null +++ b/SFML/doc/html/functions_eval_i.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - i -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_j.html b/SFML/doc/html/functions_eval_j.html new file mode 100644 index 0000000..9fa37e1 --- /dev/null +++ b/SFML/doc/html/functions_eval_j.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - j -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_k.html b/SFML/doc/html/functions_eval_k.html new file mode 100644 index 0000000..b9eb212 --- /dev/null +++ b/SFML/doc/html/functions_eval_k.html @@ -0,0 +1,107 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - k -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_l.html b/SFML/doc/html/functions_eval_l.html new file mode 100644 index 0000000..55ae08a --- /dev/null +++ b/SFML/doc/html/functions_eval_l.html @@ -0,0 +1,126 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - l -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_m.html b/SFML/doc/html/functions_eval_m.html new file mode 100644 index 0000000..d787774 --- /dev/null +++ b/SFML/doc/html/functions_eval_m.html @@ -0,0 +1,143 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - m -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_n.html b/SFML/doc/html/functions_eval_n.html new file mode 100644 index 0000000..87f5dbf --- /dev/null +++ b/SFML/doc/html/functions_eval_n.html @@ -0,0 +1,200 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - n -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_o.html b/SFML/doc/html/functions_eval_o.html new file mode 100644 index 0000000..8d6beaa --- /dev/null +++ b/SFML/doc/html/functions_eval_o.html @@ -0,0 +1,123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - o -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_p.html b/SFML/doc/html/functions_eval_p.html new file mode 100644 index 0000000..99cd250 --- /dev/null +++ b/SFML/doc/html/functions_eval_p.html @@ -0,0 +1,149 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - p -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_q.html b/SFML/doc/html/functions_eval_q.html new file mode 100644 index 0000000..4bd990c --- /dev/null +++ b/SFML/doc/html/functions_eval_q.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - q -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_r.html b/SFML/doc/html/functions_eval_r.html new file mode 100644 index 0000000..27a19bd --- /dev/null +++ b/SFML/doc/html/functions_eval_r.html @@ -0,0 +1,139 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - r -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_s.html b/SFML/doc/html/functions_eval_s.html new file mode 100644 index 0000000..579fe64 --- /dev/null +++ b/SFML/doc/html/functions_eval_s.html @@ -0,0 +1,168 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - s -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_t.html b/SFML/doc/html/functions_eval_t.html new file mode 100644 index 0000000..64ec020 --- /dev/null +++ b/SFML/doc/html/functions_eval_t.html @@ -0,0 +1,125 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - t -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_u.html b/SFML/doc/html/functions_eval_u.html new file mode 100644 index 0000000..59bcddc --- /dev/null +++ b/SFML/doc/html/functions_eval_u.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - u -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_v.html b/SFML/doc/html/functions_eval_v.html new file mode 100644 index 0000000..77ab118 --- /dev/null +++ b/SFML/doc/html/functions_eval_v.html @@ -0,0 +1,108 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - v -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_w.html b/SFML/doc/html/functions_eval_w.html new file mode 100644 index 0000000..44a3f60 --- /dev/null +++ b/SFML/doc/html/functions_eval_w.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - w -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_x.html b/SFML/doc/html/functions_eval_x.html new file mode 100644 index 0000000..02f29e2 --- /dev/null +++ b/SFML/doc/html/functions_eval_x.html @@ -0,0 +1,105 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - x -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_y.html b/SFML/doc/html/functions_eval_y.html new file mode 100644 index 0000000..2abcc58 --- /dev/null +++ b/SFML/doc/html/functions_eval_y.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - y -

    +
    + + + + diff --git a/SFML/doc/html/functions_eval_z.html b/SFML/doc/html/functions_eval_z.html new file mode 100644 index 0000000..7ba4b00 --- /dev/null +++ b/SFML/doc/html/functions_eval_z.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - z -

    +
    + + + + diff --git a/SFML/doc/html/functions_f.html b/SFML/doc/html/functions_f.html new file mode 100644 index 0000000..41be73d --- /dev/null +++ b/SFML/doc/html/functions_f.html @@ -0,0 +1,216 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - f -

    +
    + + + + diff --git a/SFML/doc/html/functions_func.html b/SFML/doc/html/functions_func.html new file mode 100644 index 0000000..34aaa8b --- /dev/null +++ b/SFML/doc/html/functions_func.html @@ -0,0 +1,114 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - a -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_0x7e.html b/SFML/doc/html/functions_func_0x7e.html new file mode 100644 index 0000000..3b77cf4 --- /dev/null +++ b/SFML/doc/html/functions_func_0x7e.html @@ -0,0 +1,209 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - ~ -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_b.html b/SFML/doc/html/functions_func_b.html new file mode 100644 index 0000000..8ec5dd3 --- /dev/null +++ b/SFML/doc/html/functions_func_b.html @@ -0,0 +1,104 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - b -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_c.html b/SFML/doc/html/functions_func_c.html new file mode 100644 index 0000000..74d503b --- /dev/null +++ b/SFML/doc/html/functions_func_c.html @@ -0,0 +1,178 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - c -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_d.html b/SFML/doc/html/functions_func_d.html new file mode 100644 index 0000000..1aade81 --- /dev/null +++ b/SFML/doc/html/functions_func_d.html @@ -0,0 +1,127 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - d -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_e.html b/SFML/doc/html/functions_func_e.html new file mode 100644 index 0000000..b08d9a4 --- /dev/null +++ b/SFML/doc/html/functions_func_e.html @@ -0,0 +1,112 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - e -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_f.html b/SFML/doc/html/functions_func_f.html new file mode 100644 index 0000000..abaf7b3 --- /dev/null +++ b/SFML/doc/html/functions_func_f.html @@ -0,0 +1,134 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - f -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_g.html b/SFML/doc/html/functions_func_g.html new file mode 100644 index 0000000..7cf2909 --- /dev/null +++ b/SFML/doc/html/functions_func_g.html @@ -0,0 +1,452 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - g -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_h.html b/SFML/doc/html/functions_func_h.html new file mode 100644 index 0000000..6f3b1b7 --- /dev/null +++ b/SFML/doc/html/functions_func_h.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - h -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_i.html b/SFML/doc/html/functions_func_i.html new file mode 100644 index 0000000..bb4de4e --- /dev/null +++ b/SFML/doc/html/functions_func_i.html @@ -0,0 +1,168 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - i -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_k.html b/SFML/doc/html/functions_func_k.html new file mode 100644 index 0000000..3113bdc --- /dev/null +++ b/SFML/doc/html/functions_func_k.html @@ -0,0 +1,95 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - k -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_l.html b/SFML/doc/html/functions_func_l.html new file mode 100644 index 0000000..7aacf68 --- /dev/null +++ b/SFML/doc/html/functions_func_l.html @@ -0,0 +1,143 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - l -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_m.html b/SFML/doc/html/functions_func_m.html new file mode 100644 index 0000000..8a60ce5 --- /dev/null +++ b/SFML/doc/html/functions_func_m.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - m -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_n.html b/SFML/doc/html/functions_func_n.html new file mode 100644 index 0000000..bc737b8 --- /dev/null +++ b/SFML/doc/html/functions_func_n.html @@ -0,0 +1,100 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - n -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_o.html b/SFML/doc/html/functions_func_o.html new file mode 100644 index 0000000..903c8a3 --- /dev/null +++ b/SFML/doc/html/functions_func_o.html @@ -0,0 +1,287 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - o -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_p.html b/SFML/doc/html/functions_func_p.html new file mode 100644 index 0000000..59a1566 --- /dev/null +++ b/SFML/doc/html/functions_func_p.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - p -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_r.html b/SFML/doc/html/functions_func_r.html new file mode 100644 index 0000000..f10e87f --- /dev/null +++ b/SFML/doc/html/functions_func_r.html @@ -0,0 +1,169 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - r -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_s.html b/SFML/doc/html/functions_func_s.html new file mode 100644 index 0000000..89822b2 --- /dev/null +++ b/SFML/doc/html/functions_func_s.html @@ -0,0 +1,400 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - s -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_t.html b/SFML/doc/html/functions_func_t.html new file mode 100644 index 0000000..f682936 --- /dev/null +++ b/SFML/doc/html/functions_func_t.html @@ -0,0 +1,188 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - t -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_u.html b/SFML/doc/html/functions_func_u.html new file mode 100644 index 0000000..1fdfdb8 --- /dev/null +++ b/SFML/doc/html/functions_func_u.html @@ -0,0 +1,116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - u -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_v.html b/SFML/doc/html/functions_func_v.html new file mode 100644 index 0000000..41f05aa --- /dev/null +++ b/SFML/doc/html/functions_func_v.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - v -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_w.html b/SFML/doc/html/functions_func_w.html new file mode 100644 index 0000000..8812921 --- /dev/null +++ b/SFML/doc/html/functions_func_w.html @@ -0,0 +1,106 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - w -

    +
    + + + + diff --git a/SFML/doc/html/functions_func_z.html b/SFML/doc/html/functions_func_z.html new file mode 100644 index 0000000..b0632ba --- /dev/null +++ b/SFML/doc/html/functions_func_z.html @@ -0,0 +1,95 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - z -

    +
    + + + + diff --git a/SFML/doc/html/functions_g.html b/SFML/doc/html/functions_g.html new file mode 100644 index 0000000..98a7783 --- /dev/null +++ b/SFML/doc/html/functions_g.html @@ -0,0 +1,483 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - g -

    +
    + + + + diff --git a/SFML/doc/html/functions_h.html b/SFML/doc/html/functions_h.html new file mode 100644 index 0000000..edde965 --- /dev/null +++ b/SFML/doc/html/functions_h.html @@ -0,0 +1,134 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - h -

    +
    + + + + diff --git a/SFML/doc/html/functions_i.html b/SFML/doc/html/functions_i.html new file mode 100644 index 0000000..f568b72 --- /dev/null +++ b/SFML/doc/html/functions_i.html @@ -0,0 +1,203 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - i -

    +
    + + + + diff --git a/SFML/doc/html/functions_j.html b/SFML/doc/html/functions_j.html new file mode 100644 index 0000000..2e425b4 --- /dev/null +++ b/SFML/doc/html/functions_j.html @@ -0,0 +1,128 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - j -

    +
    + + + + diff --git a/SFML/doc/html/functions_k.html b/SFML/doc/html/functions_k.html new file mode 100644 index 0000000..9bfcb2e --- /dev/null +++ b/SFML/doc/html/functions_k.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - k -

    +
    + + + + diff --git a/SFML/doc/html/functions_l.html b/SFML/doc/html/functions_l.html new file mode 100644 index 0000000..77c7028 --- /dev/null +++ b/SFML/doc/html/functions_l.html @@ -0,0 +1,187 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - l -

    +
    + + + + diff --git a/SFML/doc/html/functions_m.html b/SFML/doc/html/functions_m.html new file mode 100644 index 0000000..425b9be --- /dev/null +++ b/SFML/doc/html/functions_m.html @@ -0,0 +1,196 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - m -

    +
    + + + + diff --git a/SFML/doc/html/functions_n.html b/SFML/doc/html/functions_n.html new file mode 100644 index 0000000..6ba2d65 --- /dev/null +++ b/SFML/doc/html/functions_n.html @@ -0,0 +1,215 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - n -

    +
    + + + + diff --git a/SFML/doc/html/functions_o.html b/SFML/doc/html/functions_o.html new file mode 100644 index 0000000..24e30e6 --- /dev/null +++ b/SFML/doc/html/functions_o.html @@ -0,0 +1,323 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - o -

    +
    + + + + diff --git a/SFML/doc/html/functions_p.html b/SFML/doc/html/functions_p.html new file mode 100644 index 0000000..3bcd329 --- /dev/null +++ b/SFML/doc/html/functions_p.html @@ -0,0 +1,182 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - p -

    +
    + + + + diff --git a/SFML/doc/html/functions_q.html b/SFML/doc/html/functions_q.html new file mode 100644 index 0000000..421e3d7 --- /dev/null +++ b/SFML/doc/html/functions_q.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - q -

    +
    + + + + diff --git a/SFML/doc/html/functions_r.html b/SFML/doc/html/functions_r.html new file mode 100644 index 0000000..cca972a --- /dev/null +++ b/SFML/doc/html/functions_r.html @@ -0,0 +1,223 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - r -

    +
    + + + + diff --git a/SFML/doc/html/functions_rela.html b/SFML/doc/html/functions_rela.html new file mode 100644 index 0000000..3009017 --- /dev/null +++ b/SFML/doc/html/functions_rela.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    + + + + diff --git a/SFML/doc/html/functions_s.html b/SFML/doc/html/functions_s.html new file mode 100644 index 0000000..497428a --- /dev/null +++ b/SFML/doc/html/functions_s.html @@ -0,0 +1,517 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - s -

    +
    + + + + diff --git a/SFML/doc/html/functions_t.html b/SFML/doc/html/functions_t.html new file mode 100644 index 0000000..7822258 --- /dev/null +++ b/SFML/doc/html/functions_t.html @@ -0,0 +1,261 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - t -

    +
    + + + + diff --git a/SFML/doc/html/functions_type.html b/SFML/doc/html/functions_type.html new file mode 100644 index 0000000..f333fca --- /dev/null +++ b/SFML/doc/html/functions_type.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    + + + + diff --git a/SFML/doc/html/functions_u.html b/SFML/doc/html/functions_u.html new file mode 100644 index 0000000..7c1f19a --- /dev/null +++ b/SFML/doc/html/functions_u.html @@ -0,0 +1,148 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - u -

    +
    + + + + diff --git a/SFML/doc/html/functions_v.html b/SFML/doc/html/functions_v.html new file mode 100644 index 0000000..0c5502c --- /dev/null +++ b/SFML/doc/html/functions_v.html @@ -0,0 +1,131 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - v -

    +
    + + + + diff --git a/SFML/doc/html/functions_vars.html b/SFML/doc/html/functions_vars.html new file mode 100644 index 0000000..2ced6b9 --- /dev/null +++ b/SFML/doc/html/functions_vars.html @@ -0,0 +1,478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - k -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    + + +

    - x -

    + + +

    - y -

    + + +

    - z -

    +
    + + + + diff --git a/SFML/doc/html/functions_w.html b/SFML/doc/html/functions_w.html new file mode 100644 index 0000000..2a4baba --- /dev/null +++ b/SFML/doc/html/functions_w.html @@ -0,0 +1,130 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - w -

    +
    + + + + diff --git a/SFML/doc/html/functions_x.html b/SFML/doc/html/functions_x.html new file mode 100644 index 0000000..3d553a6 --- /dev/null +++ b/SFML/doc/html/functions_x.html @@ -0,0 +1,118 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - x -

    +
    + + + + diff --git a/SFML/doc/html/functions_y.html b/SFML/doc/html/functions_y.html new file mode 100644 index 0000000..f0fa768 --- /dev/null +++ b/SFML/doc/html/functions_y.html @@ -0,0 +1,115 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - y -

    +
    + + + + diff --git a/SFML/doc/html/functions_z.html b/SFML/doc/html/functions_z.html new file mode 100644 index 0000000..1876d3e --- /dev/null +++ b/SFML/doc/html/functions_z.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + + +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - z -

    +
    + + + + diff --git a/SFML/doc/html/globals.html b/SFML/doc/html/globals.html new file mode 100644 index 0000000..72fd44a --- /dev/null +++ b/SFML/doc/html/globals.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + +
    +
    +
    Here is a list of all documented file members with links to the documentation:
    +
    + + + + diff --git a/SFML/doc/html/globals_defs.html b/SFML/doc/html/globals_defs.html new file mode 100644 index 0000000..4ba7280 --- /dev/null +++ b/SFML/doc/html/globals_defs.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
    + + + + +
    +
    +
    + + + + diff --git a/SFML/doc/html/group__audio.html b/SFML/doc/html/group__audio.html new file mode 100644 index 0000000..c624894 --- /dev/null +++ b/SFML/doc/html/group__audio.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    Audio module
    +
    +
    + +

    Sounds, streaming (musics or custom sources), recording, spatialization. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  sf::AlResource
     Base class for classes that require an OpenAL context. More...
     
    class  sf::InputSoundFile
     Provide read access to sound files. More...
     
    class  sf::Listener
     The audio listener is the point in the scene from where all the sounds are heard. More...
     
    class  sf::Music
     Streamed music played from an audio file. More...
     
    class  sf::OutputSoundFile
     Provide write access to sound files. More...
     
    class  sf::Sound
     Regular sound that can be played in the audio environment. More...
     
    class  sf::SoundBuffer
     Storage for audio samples defining a sound. More...
     
    class  sf::SoundBufferRecorder
     Specialized SoundRecorder which stores the captured audio data into a sound buffer. More...
     
    class  sf::SoundFileFactory
     Manages and instantiates sound file readers and writers. More...
     
    class  sf::SoundFileReader
     Abstract base class for sound file decoding. More...
     
    class  sf::SoundFileWriter
     Abstract base class for sound file encoding. More...
     
    class  sf::SoundRecorder
     Abstract base class for capturing sound data. More...
     
    class  sf::SoundSource
     Base class defining a sound's properties. More...
     
    class  sf::SoundStream
     Abstract base class for streamed audio sources. More...
     
    +

    Detailed Description

    +

    Sounds, streaming (musics or custom sources), recording, spatialization.

    +
    + + + + diff --git a/SFML/doc/html/group__graphics.html b/SFML/doc/html/group__graphics.html new file mode 100644 index 0000000..2b0fdb5 --- /dev/null +++ b/SFML/doc/html/group__graphics.html @@ -0,0 +1,202 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    Graphics module
    +
    +
    + +

    2D graphics module: sprites, text, shapes, ... +More...

    + + + + + +

    +Namespaces

     sf::Glsl
     Namespace with GLSL types.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  sf::BlendMode
     Blending modes for drawing. More...
     
    class  sf::CircleShape
     Specialized shape representing a circle. More...
     
    class  sf::Color
     Utility class for manipulating RGBA colors. More...
     
    class  sf::ConvexShape
     Specialized shape representing a convex polygon. More...
     
    class  sf::Drawable
     Abstract base class for objects that can be drawn to a render target. More...
     
    class  sf::Font
     Class for loading and manipulating character fonts. More...
     
    class  sf::Glyph
     Structure describing a glyph. More...
     
    class  sf::Image
     Class for loading, manipulating and saving images. More...
     
    class  sf::Rect< T >
     Utility class for manipulating 2D axis aligned rectangles. More...
     
    class  sf::RectangleShape
     Specialized shape representing a rectangle. More...
     
    class  sf::RenderStates
     Define the states used for drawing to a RenderTarget. More...
     
    class  sf::RenderTarget
     Base class for all render targets (window, texture, ...) More...
     
    class  sf::RenderTexture
     Target for off-screen 2D rendering into a texture. More...
     
    class  sf::RenderWindow
     Window that can serve as a target for 2D drawing. More...
     
    class  sf::Shader
     Shader class (vertex, geometry and fragment) More...
     
    class  sf::Shape
     Base class for textured shapes with outline. More...
     
    class  sf::Sprite
     Drawable representation of a texture, with its own transformations, color, etc. More...
     
    class  sf::Text
     Graphical text that can be drawn to a render target. More...
     
    class  sf::Texture
     Image living on the graphics card that can be used for drawing. More...
     
    class  sf::Transform
     Define a 3x3 transform matrix. More...
     
    class  sf::Transformable
     Decomposed transform defined by a position, a rotation and a scale. More...
     
    class  sf::Vertex
     Define a point with color and texture coordinates. More...
     
    class  sf::VertexArray
     Define a set of one or more 2D primitives. More...
     
    class  sf::VertexBuffer
     Vertex buffer storage for one or more 2D primitives. More...
     
    class  sf::View
     2D camera that defines what region is shown on screen More...
     
    + + + + +

    +Enumerations

    enum  sf::PrimitiveType {
    +  sf::Points, +sf::Lines, +sf::LineStrip, +sf::Triangles, +
    +  sf::TriangleStrip, +sf::TriangleFan, +sf::Quads, +sf::LinesStrip = LineStrip, +
    +  sf::TrianglesStrip = TriangleStrip, +sf::TrianglesFan = TriangleFan +
    + }
     Types of primitives that a sf::VertexArray can render. More...
     
    +

    Detailed Description

    +

    2D graphics module: sprites, text, shapes, ...

    +

    Enumeration Type Documentation

    + +

    ◆ PrimitiveType

    + +
    +
    + + + + +
    enum sf::PrimitiveType
    +
    + +

    Types of primitives that a sf::VertexArray can render.

    +

    Points and lines have no area, therefore their thickness will always be 1 pixel, regardless the current transform and view.

    + + + + + + + + + + + +
    Enumerator
    Points 

    List of individual points.

    +
    Lines 

    List of individual lines.

    +
    LineStrip 

    List of connected lines, a point uses the previous point to form a line.

    +
    Triangles 

    List of individual triangles.

    +
    TriangleStrip 

    List of connected triangles, a point uses the two previous points to form a triangle.

    +
    TriangleFan 

    List of connected triangles, a point uses the common center and the previous point to form a triangle.

    +
    Quads 

    List of individual quads (deprecated, don't work with OpenGL ES)

    +
    LinesStrip 
    Deprecated:
    Use LineStrip instead
    +
    TrianglesStrip 
    Deprecated:
    Use TriangleStrip instead
    +
    TrianglesFan 
    Deprecated:
    Use TriangleFan instead
    +
    + +

    Definition at line 39 of file PrimitiveType.hpp.

    + +
    +
    +
    + + + + diff --git a/SFML/doc/html/group__network.html b/SFML/doc/html/group__network.html new file mode 100644 index 0000000..4e48001 --- /dev/null +++ b/SFML/doc/html/group__network.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    Network module
    +
    +
    + +

    Socket-based communication, utilities and higher-level network protocols (HTTP, FTP). +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  sf::Ftp
     A FTP client. More...
     
    class  sf::Http
     A HTTP client. More...
     
    class  sf::IpAddress
     Encapsulate an IPv4 network address. More...
     
    class  sf::Packet
     Utility class to build blocks of data to transfer over the network. More...
     
    class  sf::Socket
     Base class for all the socket types. More...
     
    class  sf::SocketSelector
     Multiplexer that allows to read from multiple sockets. More...
     
    class  sf::TcpListener
     Socket that listens to new TCP connections. More...
     
    class  sf::TcpSocket
     Specialized socket using the TCP protocol. More...
     
    class  sf::UdpSocket
     Specialized socket using the UDP protocol. More...
     
    +

    Detailed Description

    +

    Socket-based communication, utilities and higher-level network protocols (HTTP, FTP).

    +
    + + + + diff --git a/SFML/doc/html/group__system.html b/SFML/doc/html/group__system.html new file mode 100644 index 0000000..1d3a9bd --- /dev/null +++ b/SFML/doc/html/group__system.html @@ -0,0 +1,192 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    System module
    +
    +
    + +

    Base module of SFML, defining various utilities. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  sf::Clock
     Utility class that measures the elapsed time. More...
     
    class  sf::FileInputStream
     Implementation of input stream based on a file. More...
     
    class  sf::InputStream
     Abstract class for custom file input streams. More...
     
    class  sf::Lock
     Automatic wrapper for locking and unlocking mutexes. More...
     
    class  sf::MemoryInputStream
     Implementation of input stream based on a memory chunk. More...
     
    class  sf::Mutex
     Blocks concurrent access to shared resources from multiple threads. More...
     
    class  sf::NonCopyable
     Utility class that makes any derived class non-copyable. More...
     
    class  sf::String
     Utility string class that automatically handles conversions between types and encodings. More...
     
    class  sf::Thread
     Utility class to manipulate threads. More...
     
    class  sf::ThreadLocal
     Defines variables with thread-local storage. More...
     
    class  sf::ThreadLocalPtr< T >
     Pointer to a thread-local variable. More...
     
    class  sf::Time
     Represents a time value. More...
     
    class  sf::Utf< N >
     Utility class providing generic functions for UTF conversions. More...
     
    class  sf::Vector2< T >
     Utility template class for manipulating 2-dimensional vectors. More...
     
    class  sf::Vector3< T >
     Utility template class for manipulating 3-dimensional vectors. More...
     
    + + + + + + + + + + +

    +Functions

    ANativeActivity * sf::getNativeActivity ()
     Return a pointer to the Android native activity. More...
     
    void sf::sleep (Time duration)
     Make the current thread sleep for a given duration. More...
     
    std::ostream & sf::err ()
     Standard stream used by SFML to output warnings and errors. More...
     
    +

    Detailed Description

    +

    Base module of SFML, defining various utilities.

    +

    It provides vector classes, Unicode strings and conversion functions, threads and mutexes, timing classes.

    +

    Function Documentation

    + +

    ◆ err()

    + +
    +
    + + + + + + + +
    sf::err ()
    +
    + +

    Standard stream used by SFML to output warnings and errors.

    +

    By default, sf::err() outputs to the same location as std::cerr, (-> the stderr descriptor) which is the console if there's one available.

    +

    It is a standard std::ostream instance, so it supports all the insertion operations defined by the STL (operator <<, manipulators, etc.).

    +

    sf::err() can be redirected to write to another output, independently of std::cerr, by using the rdbuf() function provided by the std::ostream class.

    +

    Example:

    // Redirect to a file
    std::ofstream file("sfml-log.txt");
    std::streambuf* previous = sf::err().rdbuf(file.rdbuf());
    // Redirect to nothing
    sf::err().rdbuf(NULL);
    // Restore the original output
    sf::err().rdbuf(previous);
    Returns
    Reference to std::ostream representing the SFML error stream
    + +
    +
    + +

    ◆ getNativeActivity()

    + +
    +
    + + + + + + + +
    ANativeActivity* sf::getNativeActivity ()
    +
    + +

    Return a pointer to the Android native activity.

    +

    You shouldn't have to use this function, unless you want to implement very specific details, that SFML doesn't support, or to use a workaround for a known issue.

    +
    Returns
    Pointer to Android native activity structure
    +
    +
    Platform Limitation
    +
    This is only available on Android and to use it, you'll have to specifically include SFML/System/NativeActivity.hpp in your code.
    +
    + +
    +
    + +

    ◆ sleep()

    + +
    +
    + + + + + + + + +
    void sf::sleep (Time duration)
    +
    + +

    Make the current thread sleep for a given duration.

    +

    sf::sleep is the best way to block a program or one of its threads, as it doesn't consume any CPU power.

    +
    Parameters
    + + +
    durationTime to sleep
    +
    +
    + +
    +
    +
    + + + + diff --git a/SFML/doc/html/group__window.html b/SFML/doc/html/group__window.html new file mode 100644 index 0000000..bf60387 --- /dev/null +++ b/SFML/doc/html/group__window.html @@ -0,0 +1,187 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    + +
    +
    Window module
    +
    +
    + +

    Provides OpenGL-based windows, and abstractions for events and input handling. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  sf::Clipboard
     Give access to the system clipboard. More...
     
    class  sf::Context
     Class holding a valid drawing context. More...
     
    class  sf::ContextSettings
     Structure defining the settings of the OpenGL context attached to a window. More...
     
    class  sf::Cursor
     Cursor defines the appearance of a system cursor. More...
     
    class  sf::Event
     Defines a system event and its parameters. More...
     
    class  sf::GlResource
     Base class for classes that require an OpenGL context. More...
     
    class  sf::Joystick
     Give access to the real-time state of the joysticks. More...
     
    class  sf::Keyboard
     Give access to the real-time state of the keyboard. More...
     
    class  sf::Mouse
     Give access to the real-time state of the mouse. More...
     
    class  sf::Sensor
     Give access to the real-time state of the sensors. More...
     
    class  sf::Touch
     Give access to the real-time state of the touches. More...
     
    class  sf::VideoMode
     VideoMode defines a video mode (width, height, bpp) More...
     
    class  sf::Window
     Window that serves as a target for OpenGL rendering. More...
     
    + + + + +

    +Typedefs

    typedef platform specific sf::WindowHandle
     Define a low-level window handle type, specific to each platform. More...
     
    + + + + +

    +Enumerations

    enum  {
    +  sf::Style::None = 0, +sf::Style::Titlebar = 1 << 0, +sf::Style::Resize = 1 << 1, +sf::Style::Close = 1 << 2, +
    +  sf::Style::Fullscreen = 1 << 3, +sf::Style::Default = Titlebar | Resize | Close +
    + }
     Enumeration of the window styles. More...
     
    +

    Detailed Description

    +

    Provides OpenGL-based windows, and abstractions for events and input handling.

    +

    Typedef Documentation

    + +

    ◆ WindowHandle

    + +
    +
    + + + + +
    sf::WindowHandle
    +
    + +

    Define a low-level window handle type, specific to each platform.

    + + + + + + + + + + + + + +
    Platform Type -------------—
    Windows HWND
    Linux/FreeBSD Window
    Mac OS X either NSWindow* or NSView*, disguised as void*
    iOS UIWindow*
    Android ANativeWindow*
    +
    Mac OS X Specification
    +

    On Mac OS X, a sf::Window can be created either from an existing NSWindow* or an NSView*. When the window is created from a window, SFML will use its content view as the OpenGL area. sf::Window::getSystemHandle() will return the handle that was used to create the window, which is a NSWindow* by default.

    + +

    Definition at line 68 of file WindowHandle.hpp.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + +
    anonymous enum
    +
    + +

    Enumeration of the window styles.

    + + + + + + + +
    Enumerator
    None 

    No border / title bar (this flag and all others are mutually exclusive)

    +
    Titlebar 

    Title bar + fixed border.

    +
    Resize 

    Title bar + resizable border + maximize button.

    +
    Close 

    Title bar + close button.

    +
    Fullscreen 

    Fullscreen mode (this flag and all others are mutually exclusive)

    +
    Default 

    Default window style.

    +
    + +

    Definition at line 38 of file WindowStyle.hpp.

    + +
    +
    +
    + + + + diff --git a/SFML/doc/html/hierarchy.html b/SFML/doc/html/hierarchy.html new file mode 100644 index 0000000..f1b8133 --- /dev/null +++ b/SFML/doc/html/hierarchy.html @@ -0,0 +1,175 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    Class Hierarchy
    +
    +
    +
    This inheritance list is sorted roughly, but not completely, alphabetically:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Csf::AlResourceBase class for classes that require an OpenAL context
     Csf::BlendModeBlending modes for drawing
     Csf::SoundStream::ChunkStructure defining a chunk of audio data to stream
     Csf::ClipboardGive access to the system clipboard
     Csf::ClockUtility class that measures the elapsed time
     Csf::ColorUtility class for manipulating RGBA colors
     Csf::ContextSettingsStructure defining the settings of the OpenGL context attached to a window
     Csf::Shader::CurrentTextureTypeSpecial type that can be passed to setUniform(), and that represents the texture of the object being drawn
     Csf::DrawableAbstract base class for objects that can be drawn to a render target
     Csf::EventDefines a system event and its parameters
     Csf::FontClass for loading and manipulating character fonts
     Csf::GlResourceBase class for classes that require an OpenGL context
     Csf::GlyphStructure describing a glyph
     Csf::Joystick::IdentificationStructure holding a joystick's identification
     Csf::ImageClass for loading, manipulating and saving images
     Csf::SoundFileReader::InfoStructure holding the audio properties of a sound file
     Csf::Font::InfoHolds various information about a font
     Csf::InputStreamAbstract class for custom file input streams
     Csf::IpAddressEncapsulate an IPv4 network address
     Csf::JoystickGive access to the real-time state of the joysticks
     Csf::Event::JoystickButtonEventJoystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased)
     Csf::Event::JoystickConnectEventJoystick connection events parameters (JoystickConnected, JoystickDisconnected)
     Csf::Event::JoystickMoveEventJoystick axis move event parameters (JoystickMoved)
     Csf::KeyboardGive access to the real-time state of the keyboard
     Csf::Event::KeyEventKeyboard event parameters (KeyPressed, KeyReleased)
     Csf::ListenerThe audio listener is the point in the scene from where all the sounds are heard
     Csf::MouseGive access to the real-time state of the mouse
     Csf::Event::MouseButtonEventMouse buttons events parameters (MouseButtonPressed, MouseButtonReleased)
     Csf::Event::MouseMoveEventMouse move event parameters (MouseMoved)
     Csf::Event::MouseWheelEventMouse wheel events parameters (MouseWheelMoved)
     Csf::Event::MouseWheelScrollEventMouse wheel events parameters (MouseWheelScrolled)
     Csf::NonCopyableUtility class that makes any derived class non-copyable
     Csf::PacketUtility class to build blocks of data to transfer over the network
     Csf::Rect< T >Utility class for manipulating 2D axis aligned rectangles
     Csf::Rect< float >
     Csf::Rect< int >
     Csf::RenderStatesDefine the states used for drawing to a RenderTarget
     Csf::Http::RequestDefine a HTTP request
     Csf::Ftp::ResponseDefine a FTP response
     Csf::Http::ResponseDefine a HTTP response
     Csf::SensorGive access to the real-time state of the sensors
     Csf::Event::SensorEventSensor event parameters (SensorChanged)
     Csf::Event::SizeEventSize events parameters (Resized)
     Csf::SocketSelectorMultiplexer that allows to read from multiple sockets
     Csf::SoundFileFactoryManages and instantiates sound file readers and writers
     Csf::SoundFileReaderAbstract base class for sound file decoding
     Csf::SoundFileWriterAbstract base class for sound file encoding
     Csf::Music::Span< T >Structure defining a time range using the template type
     Csf::Music::Span< Uint64 >
     Csf::StringUtility string class that automatically handles conversions between types and encodings
     Csf::Event::TextEventText event parameters (TextEntered)
     Csf::TimeRepresents a time value
     Csf::TouchGive access to the real-time state of the touches
     Csf::Event::TouchEventTouch events parameters (TouchBegan, TouchMoved, TouchEnded)
     Csf::TransformDefine a 3x3 transform matrix
     Csf::TransformableDecomposed transform defined by a position, a rotation and a scale
     Csf::Utf< N >Utility class providing generic functions for UTF conversions
     Csf::Utf< 16 >Specialization of the Utf template for UTF-16
     Csf::Utf< 32 >Specialization of the Utf template for UTF-32
     Csf::Utf< 8 >Specialization of the Utf template for UTF-8
     Csf::Vector2< T >Utility template class for manipulating 2-dimensional vectors
     Csf::Vector2< float >
     Csf::Vector2< unsigned int >
     Csf::Vector3< T >Utility template class for manipulating 3-dimensional vectors
     Csf::VertexDefine a point with color and texture coordinates
     Csf::VideoModeVideoMode defines a video mode (width, height, bpp)
     Csf::View2D camera that defines what region is shown on screen
    +
    +
    + + + + diff --git a/SFML/doc/html/index.html b/SFML/doc/html/index.html new file mode 100644 index 0000000..d331308 --- /dev/null +++ b/SFML/doc/html/index.html @@ -0,0 +1,53 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
    +
    +
    SFML Documentation
    +
    +
    +

    +Welcome

    +

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

    +

    +Short example

    +

    Here is a short example, to show you how simple it is to use SFML:

    +
    #include <SFML/Audio.hpp>
    #include <SFML/Graphics.hpp>
    int main()
    {
    // Create the main window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    // Load a sprite to display
    sf::Texture texture;
    if (!texture.loadFromFile("cute_image.jpg"))
    return EXIT_FAILURE;
    sf::Sprite sprite(texture);
    // Create a graphical text to display
    sf::Font font;
    if (!font.loadFromFile("arial.ttf"))
    return EXIT_FAILURE;
    sf::Text text("Hello SFML", font, 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 (window.isOpen())
    {
    // Process events
    sf::Event event;
    while (window.pollEvent(event))
    {
    // Close window: exit
    if (event.type == sf::Event::Closed)
    window.close();
    }
    // Clear screen
    window.clear();
    // Draw the sprite
    window.draw(sprite);
    // Draw the string
    window.draw(text);
    // Update the window
    window.display();
    }
    return EXIT_SUCCESS;
    }
    + + + + diff --git a/SFML/doc/html/jquery.js b/SFML/doc/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/SFML/doc/html/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('

    *D6{Ggfb{7`PWBS!x@ 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%0A@qUJ<*>)WD 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 z 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

    tSuh+OmFiy>JxCn!P6wHT$G7rK4wijRlYT005z- zJ`2n0QaMRmHkk;=U$gG3?FUF-?SdqVIf5UAb5rcUC{Y|I}8Iljx z^w`@R=;N;bRm22D616l3tSdYNf9&@g@E272a>vd`;KC3Jph{TM8XMy8L`-y*&K*n& zW;X+m2Jdu)4zvuR)>xUnVT|3>?q^jx2`}-;fLq1Np{~9xW%WAa7jr3U%ONcqgb0x}W%?ga zKoJzrFW37EwaR^sAnG{@ZF4i>1tBfC@6q5~AX(C2YgC^Z^W!vWTAGlv8AZfuVX zo|A8>LP#HjejO$R_iYE*tg^^wqx$U&97ea2l|FiG<%XuBLoxMn@Q&Ei(w@o4)cDiI z@S{C_XwTFZ=GQG|dqyIx?o8Zf>UV^&>uh<2Stq9+G1>(}4};rnN+p<~jc23`L%e;6 zo>c=4ys7A$>Sk-EGLGrMb$GAfv}3xPO$qtUeYEbOlE!3{*kdDKtH8WefiDrmn7R>Q zka_soE*Q#RiU0O-gwW1J@(*Sfsp{>yg0iKbwYG1=duAiJE(QsSO+D^vn~s})ZK7xZyN=SI(To2;GRIYt z7TXW$-NF8FGIDQ|Hobt|)*}s%z6zyEQ~+b)f0Wk$|ByCtTH5pscVWg9bEfm2oBKXD z=U9q$85)*ERxqVm`XHEAu^>>kJBGeXpkPVALT`EdA%Zkx> zzPZ@TdSx#=`wpw))k+6~c~QWI1h!?L5DV))G@{=Yxqz%hC`=uXPLSO$TIt0g*HJXlpn_yUNQPzXvp<;d!azq*76}meU~Usj0u=J}q8P{UIG{Lc{@W&w~w(hj!cH8 zzTaf%d)(gGU+J$US#ibyT8GswBklag1icE1bI+JoGg(iF&YSHv0b>Vc0&l>o}6cCHp@t9K>g z+QMxkEK5w#ws_!*mtC;;aCO2Lx?j#Sd5hesJbE0j1SWFv?R_`D_b|-9m80N7V1pr7 zfQII|?K}iU@Fi}`@m++kA1l0i+;yt---=>k12{Skp(`M3Z)eS$aD0QEE`ad{xzb6p z!(FM_k*oyS7UEkT4@2_>Id}nDgXl86lf4)ZbHyEV;*Q>KzUAl$oxcHl-l#J){tlF7R|x{aGazubiGX4v&^Dn3%ZfI> zx$Fs@g@>8ZF<1*ZU*LVL4i}94hhL zag^Zh!(hwhXn-cfR^pUx5g1)9u5 zmbej62}O|G{fm^<(+M!Pw8>wute#4cTC~M|l2dTtyn4S&fB0q044AKjs3>r9GZ5Ax z(MR3zY;=_p_EuaVCVnp#%3!T7kzJTl1080Y)=USQ<7A&N}0w z3O9#cORzLT#Q*lLr01W6FG`jr`g@B_E~(`zoiOolZk-X^kiNO2`*$1nUNG4n#kfPP zrN7b%CT3GN@kGIGH z)E+Y_)%`CfrJz`je9X|bpdS!j1V+v#HUwdN&}L2O0O%_bZ5xVObY7)@=@Ogr@IclQ zyL}f#50hR%S3#AB)f7%%0J@YeC@5Jt@!-wCXwtla1U8Mopz5-oy#{~zHpl|m>) zk-b4vS`%O0E}jhGNs~FL!SXcPwj8`)7V5Q}pKBV0Lzj@DXs|8{9wq^W>QaHYc>>bw!niZgq0Rsv>!v_RqHH^M&i@Fiw0n*W`Txpg9oD37fcp2AsiwJ;R2(iOrb-GCv6T&r-tVl@i!EyQs?PNdL#n@H)lnPA9! z+rApyjmB@%wxO8=T|I3RTbv!oPeI?QZ6Z$BC$KWytswzepXHh$Nf^eS(*#QUaea&` z4WHSY{I!!;po2bgB5UvA#MjV|3c->}^ph{9_*5Yhc^N2ts$72?QNpLnHE^Z{11Qaf zbhQ9+3#TgApA`^rs&f5@?0);Sze~>{V`((*;|OEnXhX#Rma%NbPLW;D=#2M%-5f4t zEJ?PBY~|#13?SexC&9z{Pv5yC#a;deKVorzk&)3t>M^~s$5Wxicyb);=wRl z)sI*%1boBaz&0SomfD%9n_NL#L#|}?6Kv!!XX~|HgSoXHEqEnjIMF35 z-$4Gg&=X-V@L?#0%cX#96aZ)spuK>033M1rGlE>Xg_OX)ife2j1-3H;JwWnn7u^7}l$c}2dD)wOd8A;qIhGE!YvMlD! zGX)+g80Qb_`-LpB1RE5X%r!RIO6O16f3Xgs-v1Jhb~WA+vVVf*k5_w)!+i1xx{gcx zH3xrx2Rj;TySX0KMw@%If2B0Y-OtJA$$ zv}7NIiSr|-C--3J#g+p|#8p&nXm{%cXdYj@>~|>H7CaJnd{3)%`0UsRuk+z)kCqRB z`(+!X>N6Z!8#sW}ZVn&{B7C4S6pf+BP5|5l@zikx>f#}fy1lSZS`^&G1EETI&geMf z#E4L)G9*kh$US2sf_%YvYk*>>Z>B42|2H&_9}BnI1)hP@4#XlV@V1D~)%L5vA& zI;N;^RN0LUM!_adsl6B-GQMbMaEOHp7pl3^Xn%ds2qFh-*RQ}fN7Rh&dRllBuD?;9 zf+RUhF|h2o8z26zWRbJN^q0erLsCd=JCZ%fs|7Y%314`Q0q-;6%S^v31+OLxTVC1v z9LfYdv;JfSv%*1;qa*nj1k26)$>!7R@ilO?teey!tsjs8n~8uSP77wupidS}#F z>dUKp6Y%yI?lao~QO6r@s9m%WrIl`C{iBy?-Rp3>1^c)2AX}a7ucKb$Y(KQw&b^A% z#_&}tPhjXThy9jwAl!&|+y{7c1Q$R0U$Edq#YNJ^3}Fqd9e*iewneW~H{VJYgxhwT zo9N)}=SeqUZqL!rs}?9&Wx-qVGfw~`ZOu}^;CyHjuJpi_vk$elRKtLPgX>CwS#1OZ zD-BPX^G9?7cBxM436NcC%ue0ZE@fY?t)~O(EU&&R+wRc5$e234)bIchn&t##x+=$f zb(3Hk!Qp+*a^aBoIwVa##VVGDV7Gwg^*TdSp5+ClL}e5pEw>cA~K-# z&DH#JAw+um+Iq=H6m7~3WY9Fwb--x^=LQiMV9ACN#Zl!!leD1&VF0ig!+ysP{s!iK z1oRjC9Zu98)%-335oFo#xJ$f{1TW}o4x@ztG2etp+3#pTK!YAOf(fZNIgvB$cXY7p z2{q{uD;}2t4E^sSN#m6?V#T8oGrL7e{ef~L8E!zfOTR#3={;c(EY{(}&=GHhyte}y zsD^hvHfgbrfaQG#HHvi>BTwo|f|7o5p&VjV{*zgt z1&D+70k+a!?reS9&HiOqV>T_+hP!#9cfYMdb39oUbNpESdv?p=87dYke9etZo!dnq z$DN;#g~o1%9b8dU*4DF(&}(fshhA-+Z3JRscWA|%W5sxl6kC?f4z)j9djVUYa%T)T z3=viyh~?vw;nfn4sv^sZy~nk3O7?I}hx>(GO1-x1w?cuLj+j}>vU-|1nXCWqa&k7Z z$0lY$(GMwB-87M`#m(eNHPGS(NcCnxWjc}=U3GSiKLl~2P+FAU}3W;z-Jhf(eP zED6==kH2M1OxU`ip>ws7;E9AwI}yJrYjOA5yz0)L=<(ojC~_3+Hqp_WfgG0{!&v}PlX=nlC3$tt z#Vqf+H_y}pn0Rf&FLSv8xO&1pY{4mAy$H|981t@em?y8;)=90)2p>tq-#Z$fyWC;0 zK4~$wKqcWTE%@l28F^!hw++_{>=WeFEzg*k;1Mf558WIT^6r zUk@Ke`+^t-@goG@ngTY7zX1VfBL2!PNK4}1Y7zet1V{mABtDiKw&6}GPf=F=3Y~Dt zgu3PxEb|7dOr`7l2uGt&fDL8@F8R^{98r9v6yV^jPM`M%>mlk?7+cquFR_IwjnH!e z2}E)pL0;$?K-R5%35VXxz91`0ul`pg1e@aS#jFXowuy-d!fR>+2|htL{$V7>cZ$?T z-sbDYD`CcSg-!TE8jf9A#2%lQwd6~9D||n3flg1vLp=1AC<1x=kOjB7v>grS`5TB* zGV7j;N72Qb*(rrCyc7i65aj`TKhJ8_e}W&}3{NCB!iAhrx`iF~$NhMM5Rdxd3Cjg| zWd;G;Di8wZVNzb6txS~yZ6y}Wt@AW@l&_VTd3JZ5`&^r-;& z@7jx$wJ2h|rT7oq%PY8~+v_Fx{~y}x8KF|Ty&i+#Xs=(v_5WvkVcDK;uS9{G%#nfr z0Nd$fG~ek{3&m;D!rbu&e2_?EjN#ZbcgFBEyw`y+TND@llebtgm zoc_GSb7(S$=2T0wB0LO+4<>C5r5HnCex`Ust-y#k_LCEsfo$afpZ^qDr8+XEPMNW- z@tY$B+UoX)p*#t@1t#471SIO62z#3N#_+!TlN;b`(7%GW9MG=^FCM~ZRR5f1W{Y9J zdJVJaD8R^)4X8HZ;=zpAbrM_nU&MAxY;h{~3l|SU0ST{m-`9g&LV`NWSWh_E&^U7$ z4@fTMpO3}8OF@Mj?fDmP!+v`8Ljs8>%hI@F1u`G_(yHji+YHjls^v`dHMCVt`a@_= zNr_!q{Qzi%+wI$Tz~TYKfpJ(pdCUg_(i7G%UMm9^OOiIp6Vh$YhGs0QOui1%^MxuMWR9{4$nj>~Bul zfCSic{8Z!c#vL0P=LSD%25TU4cz+$TuG1dyKaTHQ z?GZoOOaqREH{sieqWKM;fVu0o%atvCz`(u9#~?U@J0bUVhjdt`+S0d0LUjTJKVUe- zn;t5L_`-ARl8^hhBat5e9_ztLZM?B(=-AHk`;44j_MOo59`UtBSll%AGgsSGq}%`q zt<(Q7KA?+N?Qx(GPn||Z$Uqn|L>+Iju7?s)xfdIi=Kp1)5+*A8UnVL;BHa7F&p(3F z)$Ja%H&FQtJVu+&Mt%q3L%W+U6VnEG2^L!^C!~g_KO3tQn;Bz%VBqj^|2`v_A8IC4 zCJS{BIuCkTI3DrWgAz5HeTYQnR3O2@NPM|BHqZ6(ze6bA?2d(@+W{5NM}&Ow?gt23 z8MmR!OpjHZ#KHN8*lxLz`WeRDCn(!@D35YaH{ZTex>636NC45QI|%p?)s*fknHhV-~jKthFc!l{$ZI(SGb~sl?;c_brxzRFB8|z>rFDvY>s? zpj6xrHH`KE3YbfHjNnE5;#VWTLEs-zw?oe*@`VP1lx6%%^vMvh0peDSgrY-GZm(3< z{Q%9imHbV6VF+*Yw!?+$LVv9sn*6TW+{|M-K@SE8EswXiVkZ%Ibg-8f&mk9F1jdRF z(NFyt8;(14+#i9M2IiO1Z7xGtx&1Im?FjX?PSE!8v zP-YELw}3SwkaaZNpujow4{$<^<&a1T0@{tXU-0%tX;$l`3fLEbeBh|TkpaTROT8iT zN{2mX=y^9{o!&kV-5<5R5cbcJDHc+c0W*;QuvThsO1W{HW}atR?bZRbCM0%RW!^rd z#4NjmDS0aC=tr0&M6_5(pB&bIm5!whn7PiNuI@Zf%jT^*@)CJqI=8ko{26k)IUQ@{ zhO9c0N03d+X569&ih*TUY^9$lS~y(%`BWAT0q8XHlw#@mLWZ-#`UsEQjmk)fC{7PB<@GfowXb_tJ$JnVuESyAUW$M^Aec*{|stQ74+$hf^D(>G*Aj`LMQ zZ1wPBab%|S;jiK?jFv0wa8~*z&Q))j0 z|3Oe^xxpB$#ZP|Mb_HFVxYuyGuJb*&$avZ&{Q~z&hw=+b$T+?!jxe zb>v?@V3MW(+DZT$Y)?G|03)4JIWz~cS}OLbrK94S55fy2?J^Wf-j6BtDlHdguETz9 zO&FbAYv*yhefJ!75Qo=EbubB?s8bsRyI2S37YY&kI^OR=4qV?2;Arf45ibBaIMBeGa@6{3aZDQ%Id@7$c~KbFXvtlIVZ5w z!&9NKr0F&S)a71Z3%o`=#Cp#0~%}9zFQ< zX%iZ^wmT5_9ltF)N!`r7lx-6YT`86Ql=>n|zd8a1wrb=A%dCi4T?VIiFG2C9&9Vs# zH*s%g#gVReJ@^-{S;()Ht0lFY{NkcfQJ77 zfAn9k?ZKx_>6b8(-~AK;*S2E+_hYEQmVe&QOV5Hq{+1iUyjV!%u=VJ4}6&w+#z0v7e}in5xfKDD#d zyP%TYnr!hUTm1U|uaVjmQq*CCzSO7xW)TCp9IMdIf})2y;)GSok^G1P+D68zBkl++ zd3&OM^(pQUoo(lJ+~uQXwKiYJU4A0kHb#Al6wfEUS%DOF$MXt~ELesPmab&-mb{vn zI55MlVL<5`5~&3?1^Gp%(~*HKG8e78S!TdwOGo7mafSDpy5U*do6uHDa zFLHd}$l4ysqc+FkL_Vxtg9pUctT_+a=Bk@y3XYzQ18$_ZvCb58T6L}~+Euh4a}rLJ z45eJEN>bfv4Z)RFx1a*X+^&^v(D+QrrPwV;ufki}=fg&TNEpIM?9n?Gnhm3LO+lht zV3Q%UAPlDHB&d16E9&zo!ZrL6@K8r`qUU3U{NzLM(CC1E+0D!clC;P(!_NssuF}=d z*oCeowmN;diSg_a4`_DiI4E6f359bJTXd~+#6tVH^92NbQPGNIo?w!u1;FkPHUuD)w%h~C) z*uIt<3VT{;cK}(J`z?U>o{WU$wW(k(oh*-Wdc&OCw`T^2Er9m-tzcjqSa#WFbA=>m zb~+cmL&i25H((QJd4t&O>Tj2Nm;f2eqS6}Avbv|1@{AW%o`Y%**hn=KvU7mTrL+&a z85zFiW}H|Xtjsh|ZU2=z;bEHm4cq5Bj|jP-E_obv%b6KnHab9X6<8wbMbw5xVsY`1ZFCW}?9( zRsIv=bz7bZ$`;IG*U4Rna(i!R1kva1`t-Hfno4wu&6p^_ytS2Ntn=QM(BX4Juul2VVFve%b6v8uj zvFRy+r{`MJL-~hmrs<*BMPhg}kA-3R0BN^P-RwY&jdP3EZOp=sR?Ju|ebHpt-mZkA zo)yr;fFkwp`Bnf{4z9#Sn1VUWyS5I(t5ozuaRI3lP&F@iSn346t(Zn80^znus_ zG)2N9(8DB_51oxX(L&-jqD=6}WGKlJbv#cjL~!|#k`*%QF#8O3c<6xLl_<%mgYQiQ zd@-XA?fVgM7VAK2ZwtDBreHFCCrY|o(#f({}t0dZ%7xLPtA;7Gd(;u8?R zQLpw-O%T?9=@|5CwkrvA#3P=JQrX%M?Ka`r+O8MOEM4#jVgxB4$^hwp)dZ22j(pY1 z4s;6uw)%FX+9_e+0oM_vWPAgm7#| z3Q}5R^WWrb#nqw*dte)44(p6ifU$I_Jleeo}+AL}MOWpXEUj%40cI`6_ng;LC&Sm4hYC;~Y{Yk4$^6V&fG zFlM$PQzV3H(RF@UAaP&G+)I~xmVN1I?gC~1o!rRaB@W$nKyZ^XV~%lJZseD+pXLZH z_sCYczn!WU{D&OXP1L}Io|*o&`+*y|76Z~T5t^@UXx?bIyP5~@w7HtY4m*|u#{XuV zY(uif6#DD;Q8zGvIUNL-+E8*ix;E@?0kd$7r8FA-?S+}1;!ICTrl%~^Q=aKr0gCe< z&^_b!EZ5MtCP;t#t?Uo@NAXCr>F#g8JtK5!DwHa72CQtq$4de4lWO>voVp21R|F-e zJ`RW3vOjy9Ez3j6P7SF^tOotEKq{~WI_p>>QsF3_ojEVy3P*oCRWbQb%6cQya}b`3 z7-LxP_oKZKlJ>n%A4zZ|Gu2VcW2ExMI!4l|VBYp*+6NQ2HgG$vt6^`uBMkIoE1eAJ z;6^gGGM{c(Y@OInja1eGnyM2Kk|T<$`bWE^S0lh6hM`uf|MZ`^OLvka%TZHtuhD;U?}()4oh%7%zgDfScF~7ThK>0n3viZ{mGtFK-mMAdfCe#_!0&{n03-BtC67 zq|<)wv!Qp3jt%KzQ_zRYX*X-S_6oK!j$l2-*w~3(hSVMnx0}0qzLWjw;J5*9;tnH_ zR#)?lMGzF*vlBT|Q_5mvFw##^H#GJC69^P+;h2kGpM-_edR*+>z2YlFJA%6j;>Sta zrP?Rh>~#VJJ*-}Jl)6==+N~nXnEUB!^@FVFFf#S;ecrfU=#TE<*@$teTYW!(ENM!) z+`QFYBU`qicd%!xjJv0O`qt2Uh^<$)Y=guXdS!mB*=p>)Od)C)MZm4-7)92+gu4Ol zp`Bm&2o1#XLY5C#>HkhSHWUy0A;GV~nHw(k!dTDk*qFEc3+%40_&RSm{3$r7G}3%Q z8B|E(j*aI2hSIs6hIFpv3wZbN)Sz*d!SD=(K599Dz}-rqcd^pC&k6T{>BfbNQv-{Y zyLYp^qWuu+f7;rp^#^xi|JA}LoOrX#r8yq^anZKmHv2xU@-Zkx?#vdS9{RN9FRUV9 zYLIXW5z`zS1r`LWw+~jyEv@>vBWNF#ts5#CbH9d2e}Cm`>|3@OxEIX3uWrQql$9SE zI&+o7DoJ(-M1$fbiPj1~$i@2vCb@jP9BtCexC;j)?&Jejx2xBZy4fqfp&qoKMz!vb zmAh^6a;*J9AebD%_YzR; zgXTEh@U^^7TBA$zE^s*%0C7JZX?Z;^z&tQe{$t zv(n6x>$5_q0n||PMCMX#J2!SR zVK0EfZdL~;HQ`X|y)vue!kTq|EiDok{m-6`_vKRXcper}5!5a3{pLY}N;{TH^>{Jf zg&`)4rfQdW#1En$5o6he2W-FX348bnO5w z7Y&E!BOsBbwjxe2alCx1+H&apaZs+@ z_VZ)gEAP5PyU}eh;xVCtWoNPUN!l&mkXvOpkKR}w>ZMk!Py4P{o9jW{sEwS*C)+y& zMW6{e_UXsW+n}DU(kimZx3qo3i{K_Yo9l@NR-<|9CT=mYR=5 z7p}_3Z>3_Wx`9Q1Y1^`i&~wY7cBuaSA3#7bh%*%7%N4lMZ-+Sr;4HR$3$U!^tpN*i$*=kLTzRs`55II$;T-7z|tZa z_2Qn6zTf~xWfPBS%S9io1kHpa(XluZh59-hnD0iT3RS4)s&ej9&SndUOo1aK8`HQp z0pze7AIsCNapni83ovT8pldIktVzLqyhB+}-(@z`3bV-$q;;W2rDqgU*VuX|$z`BHd%Bs6KSAEwB>wrT5tkv?SV~mtz zrwou<_TNxVKw0@^?$tO#Fdld{0KDnDUNDhpfyqf<*Bom`vC-vcVxuz)@N%S6n^_n$ z)C}iSX%Tj9|7a|V)%T0B*(t*_1)S+B8+ii3gAQmP9!i|c1DUZi(FA8{I_4^EEl)&3 z!^(_d%!8rNG};@ep$H60R$2vDl3ti;#K)&qP}>13Czxzv8&*(?SOBl=gR~CLMF=TY z?{e89)6~1%HoP*nS%i|&afTWrZfGa2K%4&fW$+ZVDKt~|gE}rlN23<%70ro>0%|b= z#;SLDY|C!KL!5_<`wy6JTcF6c!J*&#HVBF+x~vlE+EORL4QFTg8Hx6uSjU!P8O)|3#kT4ZW0rJBXNY@JFWvr)* zc|?^-=o`Og5?X@|i60^>JS+$4;*C#p1e*O%>m0Wp10nesZ>Gi_%WvzEnhTx5sf))M z1zwaYuro}YaxK~8Gn5s9zsP`tH_%$x%rQMECUZAEUstfNrdVJy2GT*a;N( zE$;rt;cQnNzYX}kgkSEFY}eWNU4&l|e&nbWEtu~o!}giSdM|l?-`oaSCl(#k@DxGc9KJJai1rtsP@8zHa3x!8zBOt5jGVrR}~}^ zzo+8EF5v#GAAi(S1+CX1^Di=U$5qJr0pyJJg=8H6uQPV!n)y0%UD#3RF$Q@KCC1}``VgzM5s=+1%F|j?bPO3>3tebjp=_NB_m^1kOenckQAIEA_|`3u z3)y$lQ>Xtbm8(;7tx60O?V5=iJ%*G`TfPNQYd_fW*`4&MT*FBr*RX`E04J@}^$s|v zk!{>@rIGt}r{(?}G&^@>Gk>hC^Dv;@>L#w0ZIN$5UNlc=#N{#S%>zH6i#zSvscgP1 zl1C;>Oh>^_3p|${falSn0bh}V|B1jS?nhyYwr#;JkPtdi*!(^eb_hKqt5JFXQW&8$C-QtsTS&#naN{ZqM8KzKL(;1eP#Fu8PPA_ei}tu8BO6%wF7-P=Fzsz z@9Um=6z_%M_bvQl_-(+iAHTohH}Mm^?}hGJi0@7KeH*_xevjbyC;YsK`zQP|#Jz?+ z5X|A_*qo!Y!@(_R-~7jXxZ1YdTv=Lf9**!|zv$S}Md*1M5IhQya0-E_7?kpe zj08SR#7GWio{FK&CgtI|X3E1u%9MvElqnC7CsQ6C4x~Ihm`r&hnI0ZdN{nTAV|g#m zWpWyH+a9he^3%d6G^F~zzfL=!YFe9fk;r~NP1nj^WnR%CYG&4J{h{O7hPbebbSo9T zFrTsS%OnU__}q_Rb%$Lot`T-oD2K_tM13Ji(WFKdeQ;er;scQMpADHR&ugk-VDj4# zvJOFV3ZZGP^6+4m{UvVEaD!QSbdT1zR}T)@ciYF)u)TUb+3JAdst>V8m}iSzg#yYn zC-k=;?X&05rn^0drtU*K+i0j7MvAo~v9XD<0BhbSjcJ0VbhEd|%|E(}V(*+O}1edx2cb6fI&1mBYfd{%{hSLm~rPXK}PQGr@h zP^G>|YyAai>_W_RMspR!D>9qw1vb|wS@vUiv{LIsV@XrJkZ!86+IyOG7fAcjX{6E6 zE}lpU3M$j`yH9Vq{?DSSc1K7|jD*r)Jx(msXH zoY<%EaTHO)FK+C8&yKd@)@U_lxydKx@c-u&=At{ewADwjhJeehtv+hFJlblWu_CNY zLCX@l*kCQT9Mn^+Ed^-zIKG-Eu*P)}o*Uvh zDXoKSK~kc7M)zprr559*M&qR}ix)=|=tOfbh{*!2feEV_q{}R7)YS$W! z%AU6!V|!s;mM(jVWU+;rR!X-2%vw4MUHu-+0Kect#S-YoHRf!dVSh>(q6k( zaBpzL%M_sN(t24s&=5R%jONBm=kQ#p^%|iU)4>qGmJ8TRiguaE(Q>ZiALA#YqW=QF z+zk90+0n4c6JF14*(?O8u(-5pCSxY3n?=WI#I1^&6>ymCFO@gk;?Cb-l}JTU0`%u+kD`)!PUv+Hc5P_*gb49Pm~x->y~K9jNmc z(Ns7D8ixJFmyM*HvBbR*_`W)agVieqkb5FcT0Ko#V@`m+~%CN%X z?wTDxxsh{rawF3qx*&`Zv5|uu5%}An*N3?A_OYu(DPuQBDmjte9J^;8wRRZ=y~7a5 zUkC|kV40T;f_=(B8({or* z+mFB_{9qRzh%Eq?;_F*W?T|L|YKcUW2=l zQV)X@8RdXk#HZ)7C}p*22035b2BXP-V;mP~+l+2-1=!P-Kn9%0i20HgQz+SIA^xhx za277+F;cos*jG|*f}5hBYm>0FiMOjqD5-S5jagiuUn1%3mOHHR%!9hRWU|1zQ6)A+j zoK0G;OsxK3ajg1OiYg(<>hq0h#2R~}+SwR;ne=TI`g(6M2FzVw{@j4c*KjUM*(BEp zT;g(v1Ov>}{LYS1`zV zmlG{L39B6!-dh23RCn@Xq21ZYUIU_WeU0Tue1qr;8uJ6k>xUYxN!ip794!-Zrsa&f zu#UksY6P?%R!^ObT(NfSG-tF_J@r}SqP5p&O{>X@7O1CAMW(F1K6_eCcJu=ER5IdR zd%b;HjXgREFGo5;Zz<{3vmmt&i;OB)+Zr8GEphF!Iw^p!T`$Sv!V`3Ei zaB;Whm=MZ}=F9Cz0OCFc&APi`H@9=W+;eku3-_(OpIn%x!vhe-@rH80T=R9?D?F30 z_r|)YUKop0wJ_P@g;sz*DFV9kwUq0j+ej@#yb%QqJhAoEGK43#i5iA*aIwFJ3Wf%R zYd-Fp(3fqruyIDe-PI>7huwX;r0wcbXYmXC8qM)PTfxZ_^lyTXP5 zWtYX5(fAV{F3wjEXGMps)u_u_jXw9>Y#syg<-mL%ZyFCi85#-MPnx1SEjKzYr6_Q7 zpXhHD8gf(AR639dQE@Mb9S8$O-6U#@(K@4ZqIaL~_cZ*AOEOdc!b;71IheCJ#3T#- zSEJy*12}9Ru{FS}0fk%}t>r?x6t7Mx75EbquY_}Ymhfr`r&n4Fcwy}FAMC@CqSXHp z9UHz;nNp*}nFA+l5E@n=<-HiLxN+nF(~w+pn=S9@6AKT;ja`SLH*#DlPuO5XmpX#* zL8p>aI$Y4nO+$S?W^}MA)!W ze2Th#m}GdpLo4C9{)DbMe(lHIz*_tDefW#j2(A8m?L++-VTh;lP{HH_F$@uPn;278 zhp0GKp#7MdvK*(s0aUzfe($?>jK5|~4%gc3hqbv5?3oIb)$0%oW4oYUP~izcg1G13ho#zndPE8`_Qxf!ER!E-WnoL63bjE`}-1SthOYdVPFmE@Y)j5 zo^2;miQHrdzaR(h7kji0k_1xJl?%w%ag58<)J8FEh8nFFxvU|%Q8+zsq;E8oYhYOd zrzEC9(H=;!F^?uZW~^*21fty7DdAFBGCBj9XRTj@;wNreMg5a?VNf!X-&m(Vi-Ud)1no$je!e&vF{V*>8J>l(gop<@`Nt~Fn6I3u6;w(V z_GvH1XJ@U=nl2XKcGoq;Z_X0Y_pW=vj$qCd@`K1#bq#fmV5L)!{uXM?QwnjYfeqw& z3=M}<{&5ZZPml;naDajm7g|M%epYo?(%R3yVz8P#3TXXQ4}Km*kn z#x8r+eaJ~ha{sDzaH2~k`&V_RT>rSp**s8ki@?i`hfu(m`^mR#c)AYHK%=v(&q@YL z*Ld*=+ITA)*{jcP#9v$F8`|%mfdgjvLZQQLfw{>ihz(lYuOIw=mMtrY=^zVgbp5LY z9!Z8DAv}T_4cNK*lLQRe4`)5gv`BE-v&<8t+&g>^9P!^X97LHL*3X%1QswRynm`#D zBOVi$^1Uz|+P7?LXWFLa_$%=AW7k&@q9(^E>u_vTy2m{2frr_%Kw z@R3z*wfV5lu!s7gzk>2+&9hQ={sa(cg93;i{8*;=XY)#SaT2<_DpZK{tO))%qEj$M zi;^?cdyU@7ascU@t6$h;X11I!I=V{j%F4soh?^ZEQmuw;(F&$#5~Qb-OLx=BZe%*q zb1Wx?tY#?A#Y`s-zO4x@J$|+|q{mN#^!SYNqkbiW^0>bwgMfH^Za9g(EJF*>7|}S= zU=i-dCB?kEa6_DfKEL01$F)C~Sv>H-Jd6X^RGZCb3qL3x?}MNK-&xQ9HA9uoF9J}e zRs4~ajGN0DZx~nF&qWlbf&xlq6gNj4k z7lDu*R^gUuuRewlhtG>udDVBb7%*8<`{;Cw(@&?DV8i*bssJ)V`313AFs+Vxn12HN zQy5;7r;AD&bz!y#di5NnQSZj>gQ|k)<^5H1Hql=tClmcu9#r4fUj??$kI(qXiG+H0 z0IzC+Kc5FFSk|C=Ft;o>;*ZS=#AdP7g_sob`}(Uy8K=KWChGpGLS|q@SsWbedy!9g zvC7?f38LGTUpB^JJ|~tJTj+@0SJdRF0U7 zwp00~l@q6JN#XNu{f?*@pE!XDNxATH2Lpo*!7~fx> zPn>YnV|)zal?y3lFj$j^H6O?;#ACwxm&G&}UasIM0D(DL@G)|$GIFz;!fY6y0U~Xn ze=6p`9GQJw#*3BzpN#nbkJ(GMSnoKn-3?yv!rnLTSkrsZ9;|SuE5!OYYRmZ)aJ?3G zX?TlSTk6#c?uEK_s7{;b*~~tqy%Kx@YWTPbu%~y}sXXyg(O%_={k`uvi@f)5x*A)_ zd7ju(FLdVjE{1t7oX+(vhRuKLo0@zr`ZZ(B{Wo-S*g!sgFeY=jSX{zmY(N%+gH7#< zRr#f9GHJ&qWqpp7yYn`Y&d~fy*Oal(J+~x)A>At3%G2X@#!Gfwt;%r^mZxMV>c2t( ztfo&dU*mAY~c$P)moh^ROf8HLbKy|AYPFb zn*n(e#n8F@xYkq&2XL;b%3d?e&SUb!j>Pyn{m)}rh680hifmdpBfpClcc)PJMhb=Q z3=|GprUk8fa=FGDxWplM<^*xRWvAtC_92%bq|ieLhel$Ct*Fryl&dbdyU!Dg{Fo;` zBWr%2m|D?pat3e0Nx#*Js@+h`^>;Vwm#6Ul=QF|JsfnB1THajk4p&3y4yU5-0ScOX z1BE}U;Cz-SaYqpR5C=gNRCw^B&(M3pk1s}`_QHap_hN?0g{+0{TNZ-am|gm?*zl+W z$sv8t#oHROzSlc}MY5WvO#7>4{084tI)BNc_6+^AP3o;Rx`KPOyak%0dq^KM(^zBO z5?km-rc&$)U#rKU(4KUuCcvD=m`lGvs_K-Ehr-amp+m6?7kr900B7bg^q!HyP40_7 z3ho*DAXX^AKwW@QZvz#8A{sR_VgyK*#j}x%s{t2lmMugp=Bqsi$@ZN%rTjW%XGT-z z$S!n=4-vHff1MQ(d6y0U7{`ahWJcHx=$oO~5X(iNdyLWIu?7b=oXpq5MTA?=OXa|) zO?dOdy&#q)NcB$_re;m&*q_SA(6C`1_jZB8Hv0kWeG5d=?1|0_C0eHf4?jc`OWZYfS29VsNet3a4 ztRDA8E3|}xA7rYN^);R26I6aJb6LUI*AeQ6Onm%q?$d$FiHuqF&ES7u7O3cDIWXJ9EY!{*hI( zrSx2E*R^fh^Fz9nGX_}(pJ%2C2OgCfz;XL54)w2Dd-YEb z6zu>=0R{=^Oez7eVE6!<+$bXr$F`(sL~)Umz_-R14Wqp&LoVi|W;`gd zbBbk+op_(Tp&t}QRc*T6s!%i!!wVVq3G3y^)BkSO^{=Qarb{eLdJj6sjaZrJJ5vzn z1H##R(3KJSYb!G9;{LKwrZf*C_LF^eLMpxOEm8UT-S-hq}Uj}JV63bC+#;aUrGb59hUacWtTj1{f zvpqDl>=KB^o=+P5YWL7zk^16-HDH&2h1lq8+O}X{R$i>Z4gLZSAQO|)wG^#^hL{g~ zmpw9`j$DwHSDsbnR_}KETFy%&@QI{xnneSZ)V=~qcZ^CZY(_HW{5)Hz?jT=s>37hy zE~njS_RW2qnH+38FB<@I<47LPN4+dORk6x<2{ng%ga>u>KD`Gp);9k6WWa-u4 z+-E$1gr|Xxh<@4X8&g3Bzhzf-psRu+Ui}uU$SAHcxr8Q8K6vdXVG3{;RA>@N<~DZj zU(V}t0lYEci7j`?QiWI4Tz#a{*`(4WPzn9tg;5VR=;3?uA+_A37MP&II1&ujz?PF_ zh;T9@j}fFAA{LTvh;T5%&IpnY5mh7}BC;8g#R$?55my}RJEe5S;5pWZEqgm05OxxP zt7s8=df33^VdnZrrl|sbk*J50-j$%Y+pKLqYHQN_%gV!V<$~r#J*4^w=zcqD7k!#^ z01Z;KH|St-6bQ-@4V9zxEpXnX2{hD zLDgbZ!iBXDb{&z+WdEVP8SKSHm5P06QFmRqQUCritAFPjua^Zs)^_53E7WizqPg9| z5Qgt<^>2B|a&iMwdJxlKC5-fcZUM-Ckk8`pA(vX*t=@x$?4>fO+(>wSD&ctE3x3_A0PVoDF@N`P~(`6EuM5FaFeWM8K+?@qE=j z3!8oQZTtLQJsUCrgKfoTjaEN1^#`lGS_AAndD`w$o@m!Eu)Abg4dc--!>#pU7f`ef zyC@tO_Ws#f=LxDek|D*sVO#hb>vrfbzsP%t=L#xa`NOJoC+M|AM~m zZ=le-@cTFX9>s4Lel~~kFU$O9n_v4G+6(p;(cG8Fyr(>&#P7+{22ob;d(NW0MGn~j zDo^$p{b}@W0{gLgzw>ICh>e^tE#Iv?F(JMTBDtQTfwdi*V5Nwc;onQAQs4KHRso(D z&NvC-?F}Ou71n&gVQt1ytU?B{eDT|RV&I0s8ApP9?XLuT!2nC_+vE|wfT+C{z*;Og zGPV`8S?1xJkt@+bpf84@UW_j2(TX=}JB^#)d=b@!XKNrNlgn_vAB)G&i{OazGt8nT#MF0vpDI5gYf(VcLi@9n4zCP^3H~9C{Tw^(z&-LoY)2 z5IZO(^dkN2(8bySu6XSMhOSU=>sWBaV)p7pdFWH^Md&P4ynwfjk!a9}BiF`5+b0;) zA39|jYq+`J7qvhEJnRY zgHrjg(4Z8oNg;9pZ`JGX+{G6~Z_ep4GDAjqNYuzXVFv&TEBi?K8jMm+kl%s{)9N2S&wI>Qx&ta z|HA0(4a8v$*v!5PrxB9JM6JrM~a0R zSNJ_z)k(biI%@=bC}Yb~rd1u)2JOb_qc2#6Ar^#f1zh?Mqt6HILv}u2T!|guA|6-s zihd1o!IvtLh4@mdh1d52_|{_@^1;nbDa`hXGco;z3&*hF+PB&9Zci3o&lSluJyx8Dk&88{r78lu#}dYK>v8Ydeu5K*R4f z#xUjUl1)+yZ+`ipy*8bgVu07;9nVF|N-lTV$vN0VLv3z6?fYWu1jYmNrUXTi^^nE$ z4rUYb3P8}=)OKl0Zt3m*+SV^1g-cS5MT#;>F$vIRgibiY#>&7dno6M=ihMk63y=<7 zy|rOfI-?|~Rf?2wxmm(RX-MY4QWAW%E08MXEUOgYii1zoPVhi|O3Vj~U2W&LOhB4K zm|!Sl+Sc)CohG)vjLrobNt8=QQWrA03aw(lHoB zi-`1BaU=LeePk|>Mu^sDp>6P5VKd~nDbs)Yg`dlOh5uGF^J=^m349M3_=dDswdeJp zBV#K|E>Fm?&XDPIkT5n)5@+lA@hx}L0Tx(@5;Rg#}n-0RgTjv1{ThnF0M0Tt~qQP&S%q zDGx4hy`+5a8l)nJ0{Ps0a<>KQ;cm(H5EATLqZd3%jx}qeE-hA(AB*2_QZ49@10%kiXax#tEDC^o;s~O3-`$1^P zqH-PfSK@ab4e6-ZtF1U>pg_@Rj+5m|;QT?(h#v=!Xs=lHI~bpSQtHQh%keob7{$Se zQC#8oQH$*`f>S<(YSNkzs{D60(_XlbqFRH>#5qSor&eqaolxRaSgkux#*3dde!}507Ki7TCZfoR2u5w~che?pAz`LmP{0pEbdXld%d%=+hPN8I6PmPtpFaLwC24 z1K>`9+#kkbKYouxyXj=`rV-7teg@LntB(e&N9@%nV|k$iD-Mim;k&1C7DEfW(et^# zz;%aZ4*RSTtrCQiezGR+knL%3!0IqD7(+O*;$_JQX_~>W{x5s)0v}a%t`8^75C$0B zgQPaLQKm9_#wP!oHrPg!)=3BnQZ7*;2?`iJNHOIS0|9LTgOdPZGZd@#)N|TXte##y zN3GUdtIZ@N0hF6i2?cGuPYh~AARz?uJRS)^P98`Tsv^{>zXMW57;DyVaQ(;Ix zL)X`nL&3H9t=+op{K_F;Ut5}(AO~D!ppnMHpkHKTcS*erCd(7%O@gLfh5MYpnV2xV z0hji$+mvjb(QE*cUZVf*Zj_0>-iIEFrl+wgUslct4<_nT9x%8_5B?DOLhe6QFW=Jk zt0lIa6}Ftyi;XkI;Fx=ZEyb_-6%LTd$Ej)uLKCn^3%3VNmJ2};<%OjwVirhU=RDW( zTn$#c`~aT;;3YYUmCl@hUFypDl~y~9MPYPm5QaseIQPR9NfPR`+9qOF*oWB^doXWx zjst50xQGBx@HRWV)wjA5wKWHc3MN*W$F#@U{_{?eo78>a7#C+H;F8Y#G_M6C3ox=G zKb=SpYPCE0F~2#6dpE!({TD(RKF}VYl+~?0o}cC7s;$~*k+C4y;=wsxzl4US6QZ>G z_5K2|!4qusWAv1ab3}rTs?02Mq5TA`@3*Q=YG5J6Y!+O7Tw{zq4)_JW+-? zP-2b}QY%wBAr%8V}1}-3pLfa-XVl^=R;VtlF!4i!Q23W)Y z{)Bpt^N+j03~Sv8jR~?s#9eaPY*^9t=j3RIJ#U5I8dQSYs=p&es7tX8BU}lVYejA} z(goC8Sa4Ppd9PersJhuMo6QX@bhZ#6mJe`rX|5tL>m($CwO+@PzhGT%BA3y1>Q}q2SvRZ(&er)*<6A#3{B6HRsWeTCsPJnc95gQL!oIeg`l`|E z@)E^*eNOc&r>c*mB4PP?f^<0TpGOSYI&<2prmVX*ab2Ti9JlVqLF+b4G^_e}TUF8p z`!8?pIIsHnJ5{dg*V?L2Z0hh-AAhfEWc7(ZRJp5PKULlPtXA_H7$B!EwzJlu)b5%O_nf^meLFdX%59{26 z9J|2lTAnVaG?}(#TCBn5y~1Yu;zzX4qTgr=0;^6P>l>P|EQ|Xs6B8;gesa&`8)22| zdNcfX(#;JK40qDDEE)CWc6`G$N67hojITPYh6tS5IPFG^Xw*l58}W51&A1K9wkDtV zE5ZJQ(KJ0xxXlTNTFUHR4)=%V&7>Uw({S{k><>}ad0b|moTx8Jbm|RbaC~Cll403L zD=)@SY|m1(bUtq(H*cjT>hlww!LT|u2#!?GVlMsncKjawoHRIYSyBcSNh4ea>21G99}~-{I~>=OttEFL4r&&!M?Z zPN*7%r0o35BURWYdx;aVLrXCBc3v_LWr%kVoBS`wZr%J#Frj-f|8i^}NXZR0rDUH~ z`Oqx=ME3cMb3^Xy!mn_BF$S+!rWE4X{D}Ah@)Hm7Km6z|`NKMa4o(ppc7*>`Qa7X7 z->8HgUM{91|BLkuo(TuR%a-Bn!&R>AEmcXBQ1+H(!!a>Eym&BHFU(e(b)&{l$d>+p zHyf?wG~QL`l$D&`5*UtPg@tkO)Ca#t4*HC7O_jb6-K`hf^3TR1F8`mj<^#B|ORM3b zalsR=%A3J{tl;Q#G=;v~7s`1yhyBXHa2G zsm*v!E5#TQ@nOLR@Dl@QBWVJ*Tk&kt7g!uofnhRuKY7xa7Um(93q#I}L(Vn&iL~RP zViy*;gp$|6!d@71KLu=Y?iepoEzRr3Y>q#egP2LZOu~;RfI|u-*C3=Icmh}q0n48H z68T5wVdCQ9I-Ca;3X5^N2cZ%Ite-|!=LTeTZpg(=ac>H`;NEy_A3?Y6&5mfRpJi`} z5dq>s98m!$!b5yz?ng#pXY1Wy?o$*rIh=MQy`j|K**W|t zbT%#epVcixioCan6O)Ak2DoZ*f^ z<3jFx=g!4srG^ND)qh)dcl2Z*)$aILv?^#A zxxfl7TqCk>S*nvZ4`}PCK~o@q@(~a6L55vRrFCE?@(O?lv`qvVjVr8DP$cq^3Hb6|XZYPg1tIq%>~~H51-gZ9xKtp(K<8m?W-Af~;W_v=7&;@+ zZ6x8WC&>euOO_$b@}6XIp{-^r{d1218i8hS!+PAu1VJqH2*Y+{gO`AX@ffx=!B^)v=r4C&Lwd^6@XKoK&vg`2ou_D31A#7KemKk_9TyFZ(DX5piw~~ za%yl01_$RFt3AbM;7SOJRni3B2)ICR_O_*Ob__8;tnsDu`}I;8=4xN+4LNs#(B)1S z4+s73m4>!L;SAxUw+cQeBvu=WhN?k1p=z+2L1Tzf_DJoHgD{89zJAqaCO2|%X`=Nc zH5Tn18qwksTzI9eS%@VUIAvQ~eIq9E9M=WAhiR)X$ETSGn4y-7X3%zScnnJ~#L$9u z7s2Meda)ly4DF%M>aY<$RLG5xKF2P2(edD9Boz@CBPocu8A(RO!-xlwWJcVGq%h(_ zB$W}ASm;G03IADMp--NSNP1hDedPA^hKq7ecKs7OCZHl)a{w4G`@{ z+J+V2ZtF9p<*O?IE?Fcp>*=WKWB~8UR`UVYf=f zxT0X5D$G8)yxEe?*J6t7#=J@>FiNyUgE}BZ;=&E9v5=B>D8?7a#I=t|iouX<5hQzQ zg@w(YHQS**bdAaUq_}cgr5w&BXh^<~dW?lAWN+HbBn#!If?k%TJv1HbGJE&*pvB71 zl&<4V`C5(?PSG}SCc!U5^FB~2S7Y8E{6g^LC~eIcyzle<_hb36gck#^lI42gt=dCL zV3{q^ zezf(!F=i5t8$Smwjzn-F^o?_Pjv>5*@H)Z)gclIDBGe;1f$%>F|Ap`)gu4*dA*@2U z4WSaj82VcMDQqTIms-lz#_UqJL2IQuT?J7}XSxNA9dv}N8`2S#jkU#>5SoQ6MdYMF|v7_n=!I? zTry*1>$p_L$j)&-#>mETe#9=3<83oWy%^bz<3jYQ>GW=3*C38A<_0tO9bBW7p53Ia zzrpBpgRsruL}5^(ZMY%^|5k;+&%$4D5c~xP!C!D7WQDa*BG?H2Lb2d46bt@BvEVNh z6aOgIpBJqCz*;aKTj&18_-x{~{uUd)TI~buY7DIF&a!j;AbIY!a2B|Nv%nRc1+L&H z6bXJpk>D5Qs>new6^ck(6w_NUu+pdc2Eg>YHcU+%-xy)Xv5h#US~v=9!BJof4+XYh z8|9|ZBG?Kog00X(9HW@+g9TTg>g|Ww@;WwJl(%%U?cPshbZKW1v0&mX{@7`#xMW53E6~uA1F5c0}Nh zPe8*Z@W(?R2zI0e^wgkXR!rf&z}8lHw8*=qNSsn+3B|xwMjxy~z!08KZG)Qy z@*Mspa9Y2N4uQ+z{Q7o1p=)7pWD?845?B;dH%W~gu!qm6geZZRR7mfkZD_yiFFqXwwfU&WR6{}un(3iFVff7=kA|BtBGu6}6F`^Twt-&S*S8xQCFZ?^-jYVK@9sqBBJL7LhR zk(qzb_HdV)7~A+z`pGxK*YyKB?UQQnJJlrFMqkn2wnM=oG;tluq`yT!h4EQju@gRi zr`N$jH2ZF=(arx$`%N*^#1s)YqYk&DG8S;ohjh*z1+jUv`gPwOzStaNjc#4mi*t2s zvb-;Fb}d+2yj=@QqffrB1=FHW{;mZ@(WmsT1(Tvr8C?q|SWgLE3vP9Ej_Pr|JZdMdkm7KJ zB8a_vJppKnm7^%U3oQ}2Zn4(U>b~|%)H+SQ-X%0^g!sig) zy~g2r5}^vgkFfh{ho=HzFv7;GV9!8UTjcN@o$BzEB0Mq$d$th9Pj+~!CpkP%eN)*f za9$j3Q%^%B;rsENR{^KlmAdR(+5>;bR-GGny7o`tIujp;k;&L41vd)!a{0K|Z$YTI zH~jXXP@yZ&IFu0%rlM}`+84BGSRf0ZBRrvS)_aP2`=@#OCl$eU6!R&Z_FTsNOTmyQ zhoh|I@5N=x#mU`o(FIyL{CZhwguT!>rEJ6z98(FekDqss={=z<`}Vvw6`mB_K{lrV z{Kw=7BX0^|LfWpETKPP&&V$v+8@Ro+E=zael!>+55U)L^)!-B|I*5Jb3by&D?Sq_r zVBXj#$viruhwg#Zd||zIT|E{LI4>6`82wqiGC_XfNJAVe+dbkqR;cV5pO|nEsVFKP zu3X%VhRo^sBs;tk=KytlA-J_KZD;mwEi|8Y0D&g-$(ePNRC!Pv;zsavCfD(@C-}g& zz-y<~mhd~-I-Y_}n(CHqu<DkrE&Ui?Z(1lqdh&2)&Me|Z>#o@5Y3~*911-RG4~R`zd@`^>pP?hmhL#U# zg#;~iAGPvTEHKBX!o7n;&qT{~W0_cq3xQZE*MW&1E!Bb^u@dyU5%J-xel9ETEDP#XO}q!6{bX#aN@jI z1WFLX6M~=!;yqX5*d&i^pppSfY&?xsbCe8jhyi!V4$kylnb3qpLSv!*{8lz79zYS3 zPNRZx(i~z6Nu35WYuFm}_g@)hoBWLNUD;r`0fWm6uY)NQrmFv9QL&z@H73-V;<+MJ zo4?HTUny|0zAFRFlZAD~E_kkahYK8C&3fLb|NdkO3~M`PYBy zvO2xXiaayiR*(XFgP)9pJW}h5>BPbntn2^BbX(2cxP7+6vl-!c2){x2CBi0ze?!=S zP>Zk}VKG8E!VL(e2vZRX5WbEu79kzsLIif9K)_@7S7n<1s(R?E_^afQA1?lAR&^xC zU-gpm_l$+s82&2S(+!6Y?769qk8(PRwcXEbVr~A5JY4=5EAAI?9w#)|a9DXA&ULwU zg?@}-)3dj0>y7nu;=M5K;iF@)Z?){pM~S6^>4*`s~Shg z;pruw%U7{cuzLWXQ*IvvyEeftMU3y`fL*NHNiY%K2_|RY#ftS)T@sH|s^FxXI7v4> zSQHsvsv9i@7 z?%r{Ag)Z?%asPr;i5PFxSoGUyBG14ZH6y-QrxYs-U_@e9o4%;)l`qODTJ1+XjX%m6 zSLhHabGL~q`W$gajZn@gFM9T|{hd*Nz=^f;s`lGlg;8TB8+`5TR{ZUv@ z^8a&x)RB=gc1?%jN6nPS(>H~al<4%~1`dz5zR2c{dVL}61qi=FScxzJVKBmz3t(qJ zNI!q+gi09i} zC+G28hmBt2+OP`@8{kH_$(A4{<@=4aq&E2NQY*KiP#=-y7$1(C;445%52rP70(!>- zg5gPhN7{DyR|q^6Cww@WWoPKxL227T4H8ovJa;(-*><8R9#p~mYT*`f{s3pu0LA3c zbsptv3LJuiW?TgC@`rR9Nu5Z__jfXFI8CG(M*0zEmE<3|v5nP8IShvKGyP{s1q6%Sb z=H3DrqaJ~(XczO+JbZ?&jmW~sB0eTtk7ayJu^ubpL?*@Clnc5D9i0uzZiTgaA3)R2fXm28PD5{cND zXeCbaRbYo*OhOs5fU~wNMMwdMZ7BhyfYVmWPCSFH*7FWLgRj=}c07Zz)-$*KAO@(RpKK> zr36C}Q84R$!j_Bg_K|0%c&a%iwTq`UPCROU8Y3SeFkU`v8e@e+O^B7uB;4Z|FBb6p zqr_5ykL+Th5bQ#s5J0rWbPB;P6h(Pd4vGVoD7=O!7P%mb+MA3TRK^1xKBNwb45D>N zWMI}ILk1Lyk^!ZmDo2F|0Z9+F$&8?m8B8%>Y2Hh*5LRu}) z))Sg>^cI*PRFescYSOQ$mVP~8Qq4g}4AqBXsE#36kostXNnW?DNuyltQABeLPNBLQB-&+y9|?xRmc`YMQ02ZF!uNF|IQ_f@zfCaBXPLfX`yWF zw4k}R%O=A_{s%;!8!yEy57!;3h)50YU(4AJ)P7&Yx3B>93nJqH%)@cl&+#d?cwDJh zr3UMdgxd$@hH^M5z=$g!{R#H@`*+J>j=(&CQCF#82eJa4v1ITtM|;;Au#;scW8~~k z4uBtMzX+g-0uQmUQ0TUyFn6QC-zV@PWq~in#={5OZ163P8K9nO{~ZXb`gT7S5&F;Y z%7Wf&gHC^@z<*KT69nlOGGpP#!`s?1MViu9khk(meR3+w=LQtq+&i%slO4AWij@7F zD!a&J>8sDn0huGGB?+qzU_yYQe|C=+`U({hL*zQ_Tfy-@7$&n=tQqJYzHAW=W38x$ zFW@SyfhbOwov4Xe!H|o!2nAdnl#2yC1zfI^izPh;To{v!#YF{NzLJYYPz79BlAD4E z7tiE!2@jXJ|W=5S}t_XUg0*k zIqGlBYQ$0TIA!g!>27Vqd`i5^1^ zjs{pCFked9)2&b8dIv0v9iLjq`xL-V@;V#5UjIv30YL#^KK$F24$p%K_apo}!kq|f z5pG9Vim(7-4#G@?=?L3ycX+}GPa-^o@H2!TBixOkBiw;-8$t!bw-9C{Oh=f6Fb?5z zgfAmpjBo*hF~6Oh5g8Vx1E6BGxT2KVn;2Rg;G;W94T9!gN=#p>-ol z$?L{q9c0)Q;saW@iuw>*GJgwycF)!J?qWJ~sPtwti4Cbr!s-4h7YH(vHk(PQRuT^X z*}DrAhxLg*&5zS@7VifEdlA{QWv;doD~Hia8Zvyi0CL4qlk0JFCzdo*dib)GgeZdX zr9m)BR|J!EMKDRX5q#T7gW$bFib*d@B)wUFlx-uGMO!RTbP+}z^#m42J)x>3pd zKVwqMEK)6LZ#AWzc?_7Jk-WJlu+C%9+eUf~`EH4mFXWiz-w6S1(I=+HikR}m$we#k zq9P_mk`xs&<;msV5M(QOwil5-I0<+qj$xL1_;3LQsE$@K1?bH@1}1%!2uVW|7uQfp z<(w09d?9!$`E7xg+T~}E;$@bo2&t`tcT|KHbx{!tbss^>@}SZ~nN-}#Zitl>Glv;Q zC3RV1`?V=H;PN3tBbhIAH4e#)Nc&IZPb04;eIj_D<=kph*ww- zLte>H_;v6Jn#o?nX)v#9zA!GTjKuCHnp3HG-6oH4t}F7zHxtq}K2IKfRQ-4&$`In; z)=Ds^Xx1bcY}dy4##A5N5i77_tMD0t!TK0OG4v{TRVhkTdcpOm8wqViDgdV8NInA| z>yti_9UGgBEdO%@6H+(nv$9SV>urtJ3Re_p8@_HUQta8XxK+x_V%ujnd3BR6m(Out zx5#3Jn|rJMkVb;Gp_}VsR&cx*Y>~kp4$^dUd~L30@yM|6-;fQ%zC(9ma53Ja2bObh zcqg`3^Wj$PIEQ82GisY2Si+@6=0gQn7nu+9x!TKon8zh(=EEE=?lT|CxHi#zn8}5f z=0hou2{9k0@dOa_p$JEbSPzrB7NuJc6S@{(5(vi%y%hg<34M$fOgo|fm!!ClwnRH||KwUZB%YpszKWGkqoZ9U{}j!^ z24@`B|ETTO8=R-v+4~RFrd}D3+y8D8|1?L-c2@n}JDIF_4E`QHo19H(C;JoXL9e4V z$qwgl*E!>C_}HTVs;>Sw9Glt^{R_tm9ZO=q{^-F)$GDge1{{ENjE>1;j!R?{HusQw z_&PAQYf-+V6Bl4${3SQB$zTOmNcGy;wMgwUM_wAGu+hAn8_h9X>rn~ru5#`*k0yA! z%DLS8`gp{swZaR-9q;{2a-+45_+f~l3=g|aTS2=f|M-%*A<=lWCO-S!5 z=N|NELPl3Px1n1J30>vbi4J2wP`3t zwl}}n-p<1A)8Tml;Yx&8Haa}>5#Iiu!*d(m+`WlvjmhzA8@E-@6%|sl_SI&yJ$P zC3DHgnxA2uDF(K|>|rL;o;FmBZ0Tql@Nkt2KQowoLkfOw_R?M!z^7G1@R;lG7z_Zp zeoQYglc1TWVq1t=;OSHAJdmq!7m}Zor&3x3t^R8 z?|WFV&ob6-@Er{|g>8&Q7>h90$rz@#S(kFkR@lwhF7eXH8PQq(8XrqnQ#DMxnZP9s zDnZOWvVMXyIWg|ZdKW&yYEv=I7m(Qz;(ND%(j@pjVA=T-P~D5j9xTe>WmT~6d^XsV zh$AOqL`>@nO?6J3t6i?aRpb&ZF4t;=96W6!V@R6j2R4^$n{n+IXPAVfVF{EUC|#~K zA!kGox?F2Uyi@awgYj~$#YOgJXnvfBuXq$kXOv+i;xD3DKxC0{AvXW4-qVtM6)%3$ zYR|E(b71}r)Rmj5E4QRjfSW)ibV+H7S80k@Y07SDNA`3Eips*v6Aiq@plXBpbijw6m5gl(@XWV*yn%w zBL#V-B}lR4@%#t024czMq3@7UBEk$x_y#yZ!AEY(W*cy2ib(d#6eZbRlx(AtEMl7_ z7C^qjHpowOmsM0MYeb`|)sUS?Ok^h#!(#>XQEDIb*kD7zCOxa7N+mv>q~dF67)Cpz zhFbP8O6Nt$20&QBL?+M}OME+HE9POKhQ$?-5A^M0A$bM@nP&+EypvXVC|fl&y-BJ< zc~ph+fbFvSKx#+DaoV%lGFH4m))~#CM*FD2XW{NZhzkde76ZzEM(y2VSo0J&#cpHx zyUE5sn*8KFjL>nYvc=E0g@MxE84Oei;tBvI=z&oA$kwQ8tzl&1-t#}B8L_%Er{b7P zam)pdDQ0z3SKk+o*|bli@e|B4a1reiGx`ASe{4HI>tU1|b7S;tugMQK?XQ~Ee)~W` z`crCxkyf|rVMQkfCyElSwhq)n?rb>Qgd7p_F6qOv{F`yNg6UU6WML9IF5F9a3h|Yi zbXyO?oM$3#v|rnl*syjI!suTHaI}?jrCbBJMd1Yq9)zjLKu}q9YQ@3JiHEmPZWN5q ztcra_6$`szI>^Lra@vMou^gsamc#k997g#)p#9MQi%;!`9MAqAGn9U6KU6aPr!ZrE zYClxM`ny|tKD8ez#{X4@nosSAiixH%sQpv>p<>8iXs~Pl)P4w)*{Alyc>CdR_hZh& zje^r%>YN>#60;|}xegNPGRW1|kG8Cb8@qny@Ek;FLbwm10^utNum6|BQ-|;cga;pR zc)p16ANS*4j-NU_#R!}3b9i3b-Zx1Sr`fuF8l7x#W^K?i%TO9d;s&$ zW?XMubrB!GhsWAJy+zA!E{ZHy@9M^t;`K0Wdc)nMjd-g2?#w=H`wJ~D<-h6tDUQs7 zjS|-cUlX~Ts{uEA<*Y?+lr!)5<(@|O(_aI0y|5_Qc16gY)tp$Jo3`sVZz#`IRGx5E z{IsQTCjXU}l_!)$z9FyN z*PFN+=R-ML0)fOa6HXm``iCunNlT}F#nTcfl5zsm)IU{fKuTpf z!9xL9nDb>7ZD_xn*`s9QX{X5PvE&AD+jgBz%#uHk1>jUNc^yxTr1#3V3 z;qVZ>IkUyFb4)n1c~$d)3a`)65W1`QiI#|Cmp;oCZgA@@nPKef%yH}<(~#M+s^#4s z&x9R~`YbGQtkE0vuW0AgdSZ1^1)R>l4jSp$dk7hRTEe`g< z+Y}qzRgGV4UQ>vic#Ad0c$*YEi@93zEq19~$coAf#wL;wCzSH7-K=Yjbx;YK$oorbHD_J{uG5iF@3(}b=!H#zoYwv1`eZyB4}gaS$(&7nu{y5)x_;Y*m21ss~)nGHa6 zlJK)7^vs5FxBU#X-<*TeC;27-|D76g%=hIxPOS=m!S&dcV_HCA6V3-}32zmeC4Ig!cAv6Ix?F;N#o#mlCK?)^mIUJA|=})L2wj8ZbC90MB#ArV8{EJ z&10INQMiTO(H(9X>NutUIrHT)`!io&)wqAqqHj5%fsU7;6chBF;l{I8HLRQT#gOCA zna}CMcznkd^NrzcZpWU?hRkiN!g-hV^f|co`2BFR({UI~U3Ki1HG&EN3Uu4M=}dQ_Q6b!WYC5~-6^u|rYpw#6krDMew%FQ? z_x2(k7f{%WUDbTquD$yQ4?b_L6YnyjID-`^I^ft5dg6_H54;%;J007E&8XGk=HZU_ z^;1yBp3LK`TDq72bhKkRH2g%k#Y0Vm-riLF;ARxaOR$=|1mk_f(HsrVzu;o(j_4=S z!%2>9!>P~z*7wD6NatFvhH&$+u3e7zhogZS{PQt){~GC&NQ?&7hr4zSZvl~)ZMutE zLw%O=hdWgHjWe#h3F$mPt;Jsc_n&uv59wS4)`0ZpVMh5Yj=a~0bRRSwMGFimfA_4K zTBQ3!KS>^!cz-;UsVjf62yfFvzq)UvYf3zJiHNY zC>1#p-ag#X5qj#5mDhCX&7r$~_rks}g36}M#!%?aJ*zvA2`ZvD61^nHN%YjyfMV0& zOAlZE4BlZST4FW`(wk6f7ns(9MDo2Q+(1AtCSKzL>j^91*b?44+_5e3o6f|=ZnafC zfDVb{1&>^k?ZF0zkn`NSf}(6(-`iI(E%?e6&jiqmrL|{wEdA^?=+INrjs}|p#gTJ6 z*k`)gjkEtw(VM5IH3jS0MW1>bopnK=xF~Y=@xH#am(b%nP6kf|Ds%LX@HO?z@SVh}ZP%0(M;<`Q0BRpR zsPh`>vUPKqlcFbld&is-$F^0+@5FdUTk{*N8qsQk_zkw-wCXq)pKEJghPPCEyzYS~ zFsSl{D)5h=;=lzQ4E<}aFv892x)ur~u5;g+w{}8b_KTIB*U#qlG|bee)vRVF_|0WK zChnpM4ALHV-??_eDQ;y!Og`FIiSqz#A6;d96q+zdPofF=ap%Uhxjj60R$?c3G_k~b zc|I>U3#98)~)9eJ-j`x=b>oE zdh|RL&DaS&FGamv8xj2E89xE!d9YJa<`c!zHXKX7^+0TP$dEeOBCf(cmPIf z6b4SCZVXN73m$i9YhFTocg=M0Z$0^ko3Ju@yJyX2B%{^G=`Q))j8*%>lCyO8qXp~S zPpx$YvJY1t#`U6=Z_T=n*jgWb&-h64pUwQJv`@{g!|m9E@XfpY=Czn_mRwIDk{|dz zT7c|pU7{z6@;fM4@4%O@^UM9QUtY*B;es>q1L^WTp*itQC%<_^zIp5shi5;+S--(v zG=%>~NPQIdJRmGXXhukX4Ey5{_9E0gjumfQb`nVhfbN>2u_@}Q}>d35b47UxMUh)hSF(EWzboQ3T z&dk0JZX(X#epTe|*Vx}W_3q-(veCge+iLr&l4j$!fmw}WW6+1!Ze23;s>os^8&2`j zo9eQ!tNZfo>t{u0%$RjM32(Fk&v9CKzB7a8_y~BDe9mHEb|I>}yY|?U^9*Z8_Liki z+?3F$J+$Mh$WyNhX|o&46C?j^#>pMb&w;P2{l)uE^{Ho$D_nhF4HdYGBD)?q#c>Jj z22xbZ>S}The`3{WSzUuirnIbHYrJS#z21n;HdsP_w8%#-0rYLSgj~Tff4NL8cxW2# zO9fz_DPLcr-Q5^`RzPVrhfo~ucQ2`T2n^n);T^SsK!VQ_JWkv|0a(T7#e~VXJYrj z#q}ZMi{`?Ei)$ky-dCV07-Hhln+a$bk0Fl-k0}JMSb#`EhX;hr=R5qb!2e|YPYuDU z0gRR>gjTvl>#owqH#g$ye0(I9J5b%A^x`B#<4)c2V0 z3)Q<1`P}@>!ccu*;Q7T6Rq24pmoQ+QaIw69db)zol7_pTLE!VPRQvif|9$6pjych-aQL72lt(T z)7UrGhh$g8cOy;^fu#UxbL$eNAijouFYf#7kNkeE?eph_-gybt@q8t-L0se%I(1w@ zlmszAweJb*;aHZHC!?L3%2#yL1QZU6&QO zmTBd#;>ayn*@3UX;ahRtx?<%v95=TVcRM)4ZLZ;sbp=isW$Ow&9l01aT%@mbK1~%! z+r8&4eOq0zM{nE{0gs1w>q*+qx}3Fjvz;BuNYIlI)1EUlr7m@CUx9l(4x>)h?x+BJ zEZyV<6tpH=(uaOxZWrwFE>1-|u5a7Z2A;dRc8#G$l*V;e`{zj%B31&{mn1|Bkoj%x zfvUlwafxcS>eg}3N8@FMu4N-p+m<7{5MAZC{<=oJ#H2fW|Kd~~_sl=Hr)@Y})Iw*- z`MJ76k4PFhYhU1Ka7lWxzRa1nf6tqGgZ^CI^&Zea)s6G!hG;wL#;%pjeTDAXbtO)g zKGm%cLA0e%YK&;7nFX%}Y2quBS$8=mT#ZG=k;^Rw8a$iKfx#-`;>&uxJkNZ&ocv^^0tXDJk3 zD!RMSj6`-5B{UmrHFu#ogQ|Lgo=;EEBjJ;y9rc+J{p6naa4H1*_mJ~42R4X$7k?i5 z7;=w>jt+l&3=Ry0z?z__?YwUT8mZ(6S+Hqw`fiwHh zi#3A@)L8%>jUyEQxaaLUG>kh@g-}Cz;fw*hZXpdQ?5BMgT?cVuBL(4GG75r8Z@(Q< zRkaej!}=+bm*d<;U-6lXQWzO1Do+$GS%*_8nU|X3icCURp&FIXl_wfG=BXTDQdE!3 z8Y}*wRejZzi z-io(7SwQf$MA(gbP7t4zF|B&z?CY*?#D^FUEdC}|Kc0mT-T1H-IdJK3%Z2sWqK}V8 zu%$({ky3xh&)>RYj8!U%{J9kAvlr=2SbP(TtapSXXQRkkv&e)_hbj{2vPi<4hnM(P z!HWSlWdLB83$P43umtDg+ee^=cZVY>C@;kVme6YeOBh68#NqzX6HoJ_Oxv7eq7jaqKcW{r284U@M%ahPE66@zR!#84ZMg{~0k{Et6tNqvH}Qx~ zFyHh;>`QnPkJ#s!wt0eyn5js{e`)`zRG!)c%Tg<$H`PF5@!3kXk|PIUrG&Pk`JG-| zdq7*$4C4ZGiFSQMddn8=!Pca5*NA$281A5^{hS{`(;}9py+KXeC}pLLiRewUXR(h! zc}vamsC2WWyq$WZ_Fx$8`>L&NEHdK0syH$Y-|7*#SOpdwp@1}^8n1(IBm&~43gQ?G zBEWq?!1-dp4Y9yMA(z|0f#6kJI|ba?0QUw=tN;g8P`<(j=3bz(YAb;vM7|C+yhVB}Utf7;J7s6I|(LjZ1K9!T-QN8%8O_s2gce6u`SC4kI8e7@cil^ks#S z#lAR%&sMJoMEF=&e}rFU8Wh?ttt~*uK)6~9J{^nj`9zpH58VgCKgIWU7J?qZD8)j! z8aYtBLbyLYH`rf89pdQ8Q?Cc4=OVm|7r@y}Lp?C*A*;(>^G*Tb;>b}PU2I1dva+9@FhvXw z6((K}-#JDf=;R$O9L0{rXAgp0V>~w-{e_GbGN1G!H7%^~%x=;0wnz`0IK>lO>G7f$ zt{NvJRI@w$cwO;q=@zk409`50X7B`G8M5T;CuMLPF1k8WAj2_NqZ&5Zn<$|`hzd53 zb}aMgg|6_sgB{D<+0BddarW_+_|ZwHjx&?09K{{UhGhezlgbN1&fkJWj!fEj8w^-7 zqHajtGM8~*W+U&3#Mlh;6RqSO&3{z-(GtBF%gq-Sz~|7JR&WGs(6?;Fb36~EOI?qcfPPbvmVK>Ai1Xv(|`&jxmRO%N5y_@jN;)r-EO=(h{!?bz!A;= zn(?*+OZD+dW!q@YziY1c9@ea5d3)t6qwyi0PaT%m@8Qgj9%MTe$!@6JD7z6>zK0Tc zO3z9lv$z$2R)#r#L~v&V%f&A->0K?4o?{o^=v(yW>>WtRZdp7udxzePXvZKO+a*@M z57XDM7UUrhI|?qNQtd#~mxq(svUegMOE>eNO-tywAiIn2n=b=6^(h+OgpT3aU7xSV zD2niK$?0dF{OSmg+$p-U6QiALz^N^`opftB0{Rv<9M($RO>Mt*V%yc5^?CzR4{I~F zA=N3Vhqc+*R1uE+_by&dJ7aLYDvXja%kIGCvSAFtQZZJ;rK#7}<2Y&@QMcrqD1NJs zYi9wgeY6eSb`#uykjBM9Lcs#TC>e%&kPAX4+X%6Uz&qeIV+3i&d!X`Wy^s_~&dWPv z$gxN;f#8r5;nWVn{$22-)P0m_qpri#sJLW8X(p6@9Q$r82r{T+2tNn6OfYVYrOBq9 z0_Hsmq?w>jnj8ufv?7N91O-zhp927virpE^qa*`7t_@#58zO**0gOU3)M%Xl9Xym( zjD0IwNuTC_FLP@N>fagHJgC0ZI^4u0)ed`HjICIxe)U=n?NQPF6CfjbLoPD@36&Am z_b;uC_(UorK)#2~A3e}ORKC4(m$^c+$QfPnfl^w(^AlL4r5CWtqFunf>D8B+lwP zlCb&)Yn!0szHDl{cUeYdlGHr^Wy^i(%Tgro*_^MSvU9%a!*{NZbMT#u+eVAyR-VPWgM?Y*3g}N_3eeUIsYJ#tIg$#pyBMC@gs6HL-Aa zWC-?v3rt)c7eEbZR~6$0j3bx<6GQw@<$K{3oc_SiCHS2O{FeAKvdIB_xp)McDRwIf z?Hq|@A77RX;yV|U2%m|Zja-vdMYea@mrxwQWCJWgEj}M5c%+13*4O8o%(BoUT11a% zQj~7Akm*Ec+1ZszI5giSO`uC!#(7|6>auf?j`jd}DRPDR1D6L}+)@sNrOJ_})GOt% ze3rx3*@anpLWhen&VWJjSYAa9dv@*Cs-ZB@4Mz3u2w+3^mdJ$|2cW{Bat=1yBeUUU z9XFfTaOA4zVj3grBv!W?Z3L@$I?5ed`+_R_8-VH8cSTx$eP*S9ur0Q9tK@(aLm0Rx zs$4koiCBL_->2`0EMmD;ZXFGg!dtc6(h|nveQ#XJE9CZTpobf_r57l40qLP&j4A_+G?axNwLvU8B9igR0SplS+VRQmjclJVKDiR8Ic0ppbB%k@s4e~z z$0Y+qWDIh-wi~ar&d0doR2w54c(h{R@q{#mEB}lFVh0|mWNeL4Z8-dJX?b`+rUM*- zyv$Vme+5-0nPUz-VgNG2_Q*kqIkl|$A16- zD$*GYKQP`;*Gi6Q{x{(@^dHjvy{uPb&wSjEih`lQ!g_$q;Sis-sueQ0(YU_@@6>ps zft3qG1yTEfBAWkC++56|de-?UGwXbeHTGh!HtN@n&2zPKo&$;fuBdZ++q1V+{+A36 z{OEGn)nKTg1_`iv0vBG;j8W!`b9`RBILOfhx;05ii5Wd)$>;&gbE7j!- z)MaY);KJxZ%8=1R7TcKqqlZ)zIUBiHVJM_3vQv!FLk4+-mgTvX35e zrDJ>ReyLwMW`_wSA9(n1c4KT!hf+e?0kbKjqT0s~S3pTT7(c8z)AE1Q5L2ZZG!J2!ljR%fqe_s$ch}ij4g${>Q zSYs-)*Z~Ue4aZ`Qp(!}wHMmj`JBawMtxWLQoQ@GynTp9E;#c+(We|~N3?i<_D5AhK zJGePrIiAFxqLmyFlM03rn!iKye-N5-q;~7AmxcvY5rD-2!-O|1j2r;6o)Dxp+%eV9D$a;k{w?0 zC|io_XKN#|9CjX-##VS^=Z{cW(6s`G5WL1Cfigf_XbQ^t0H}ey{4*p^(FTe=CZXLV zv_-pkjxPh$vTUy+88Hti2Hirmw*Fo)0{GiV_QQdwHRImf4|AkTcueQq{wCsiz2j4-Wub2`|F_EBtVgM}q=~4O_n%WH%(gX#pkA`^r>82&A z2$4BpA*1wB@Imiv>SGK(ChtW9f!rR1{Zs*yg+OzgiKZx?iK?*8Jl{R;{<7mZf9iQG zy}%^~+7mb_Vj+(CcWJ9Hg11k5Lar@~U_7v}9uMf1)g5Mhpb0~+G2;U|a9&Px9OuGM zbiitfLTi7EZh)!~kn1~`3!`V_T9zW5g=G{9n}Ly7W~8KADHTQvMh23n##arkH4=SR z;>Ktq1{X%oP0_@3B&usQGWcyM@1&6n+6%kO2KR7~Kk(gVxB~@KiI{uMj_$%eAf0oy zqqr`Q_k~1nHZ#&-hgE3`FUi+yrd11COiNTra@UgN!ElP-$@M{!0Dh~4BBNyROeF-2 z1dmF=Dl)$Ll(Tu z3@q1b%Z!>-Hh@rorEn628`a3Gk9q=7Zql60czq@w8-Gx z^W4NT-5osc)K))_h98YQs*AeNj4eJOoUX^0Tkew1L*ABoYrc$EWwACG>6UZd?a$u+3A$OV;( zTp$`pZlyu)cd10RFQDxa$w#jwDvg1$JjdtSL*Q zqcDgwNVRAKNs2b07DHRr8uqLAL(xS}s)>oBj-E-xOZ;n)$-+PO7PJ2N;|jBZ&^NK| zR`{5rFp#&<1(ph3PdvImB)UgX4}-^Xf*bDvW2Kf#I>0~>G<72F}P@pS8T=KWhU2n?UJjuY}c5PG~Qyy9+5m|#4US7sWix!Y@3dew&Tvu0^ z{h~bsFu`XsRu&LO!Q1aK8~7HpfxrvAfk6Gfy$Q5eEr{cjl5wYWqA;)9>9=2HHt;oO zQ3M8p_*_S^D!mo0XKnq;DIb21nVL_;-)44n3wZWCOntjG^D?u8`egGmvrD0ixO^Jw zSO?e1K-ZZC-oaL+fB5Un7Etr5T*0vIIy1$O*!#>XNX@7Bnf(p#Gpp%vc)p8JiEuMQ z8A1ud6ol~zIS82uX$U@qe?Npf&k)uk+>WpmVFAJ%gzFHlMz|6ofbcbhFCkorkcu!0 zVHiRp!f}*!7~v{Rg_DgN%=Tl1CkHIAu)|9lY;Hw+jZzA_LrXaxl8b8!&<4xl z%tv4%Ke7|XIj_z;o=?Fbxl)ErJh}M@&gWDqXh~J}&1Q=9{mcX7yvoC|k9-9K{3*=w z!Z4xJqjd_Al?{7(0K|v8|C~=1!n&HQtykxn&cOEzi-`G|-_@olJlmph??%Deqz?s> zz9YcHBn{;&B!Q1bw@M*PV~HheCB-6^ES3}@_M=H#fDy#?vu89$3zo_k<#-@kNi>cQ}oQ_ zyhG?Y7)OtDAo&@jKmc*_vsBZPpCv6zerF^t-d8pQOa3uyxC{M^9B_QSQ6afl!l;n{ zb7mD%5xI=Rd?7Mo+Rsi`|A6(8?Mhw{L7coS=~(hQBk3&PNRlWSvSMJlC`5N~JT8dx z#xm@~F`5W_6*90xQE?)$7;cH+%ou)8Y}NR_$=QLchC=j03(-#6Q%|q|jf$6G*pcT= zj4k~?Gw%J=uktiq-y{8LNJ-bQ6Q$qu>(z2riZr zm8|+MWNYsq6mGp7w+n9FarKMszru+8i0cN}R>}#$AJw=mf6U|#Noh5Do7EOn>;5uP zCIyc7>r;vTcJc9{W!*X~gJ(`qrmXvcqWCd(_p;;=w z(l#t)k-(5Q*kW;%y292qcOx$1Jw8fXGX}4*kv^jffoX-gEuPvO%2=1>foWn>8B4v!={@TKsi~z|(oH&JE9g%5_;Qrde zB1Uk3Z6VJRD!~1FwS`%X;Qrdev4~8;{k2mw z^a9*pTgao73UGgIp`Q`lUt5S%w)BEhM7)gP{@OwwoKt}NYYS5t!Tq&`H~~yA!2Pv_ zJhP_&_t#?Q93r^Cw$Q~0?yoJx>128VSTV%03pd%y@Pt>_nmmU`(O2hOmkSp;9ow={ zRa=kEzS8Z^-MH?U!?OzER)j?ea}j1COhfo4LLS0p2pI_ff`Fs4JfA^uBRCLxjygQ= zBeWyDiXi@qHq1y?9ZG@XH635LA_c=a`YX0$n~U;SAho{fxM4n8-AzLtW~-ZDTamIQ zk?-*2lJ`v7WhS|;q*gP@V7}EAR(bOB z>C~dY^Gzp@KB!oRr!9DTz$YBS(`GyYT_a~bp6>S58&AK-(|TW-@$@8~YJAmv+J3ZR zSJTN;VX$Lz3L*^%jeuk_V3EOqlczQ#l}tE!stGYN;^e7j#K?@3r&LK;ExbF8R@4(ka1b&(I-gpoRALU*Qt1QE6l9djpl<2lQ@x14+W45tps<9j zY?2qLD|t}`3>uZ>4LX(Z4O%IGQ}TisC2t8_$ml0mD-@nE?2>aa;+z%e&S3}Tu|aX2XnCY)tCmW`U{yshOCXI)Kt%4tKDU%6KBA9 zfiKa4Szo9doA_=3sR@RZnt{}hOz}NniZ3dx*Eo$GSXdm-$IELT5MVAtpA_Q8BSr8e-~K^8{;CLIEWdwz&rOta<$f6W^X1JW%rZD&=vE z6I{a$^%}Zrjse8KRB!an(ZPVN#(ns3;MDEPJquRcZT6TyQW|28H)H6UPz#kDu^tElu7H45^_zw|cl7A3uk)D_ zg&UkvO4QK9myVXT_OEK98>S#dAZArFL~Ijey!@&YqO6-S z>}Uq&lBMOZ?j*0H1BDpI(4N(P9+kP4?hA6k8ezI@T5PFybWm$4c63lHBfqFR4$Rqp z3^Xfsbf}0?2X&8T)HCMiJ4Z_`eog~Fj~*?v_&G_n`D7&rG~18PdtH>xF#jQ-Y;URqNXi85Q0dsM}d(@h{3Mi+cmJsvk#0-e~R1$b~xq>@-|}{nyf`qeqJ@ z`Z24b%&AK3&$k~fZ9`{P7A4xEHI_~VmsO_f=k44YF5bC(CxgvFdu>0Jh+IhjI92Qeg(mZD8fDQ?eC685!W3XJJ-c8?Z%6v$cLx>Uhslhx}1M^Z(WL>n;r~1VfNvkyy>ZR&Zi4u>`BdD;nvo3fkRXGGPP?c z^93xcPq_?>oi@y;d}AGUsp|Z|da>X93*N(i;~ffmKK0jqn7=Ls*P-sgS(-HBsC!V| z8}ne-;iiZbxdZi=V!YwPTC`VR8RGO@jNnE1EW%j`gAsa@u&o*4ZG=}4_9MK2FcBJ+ zi;#tI3BpAP=OH8`3`ZD*a2(%vBD{t0GQuAbo=0dzcpBjmgkK{36v43fjE}ST@P5?m zXnUCK)~9_-M1N@X=;k;p6(KZH12*;|tu$fqw++ z%AnBIu&!)_LPJZie7t=grrba?C6A&;?1sF;| zH|v2L1`-9kfNwwDBn6upx9lVZ^?WqvHj4^=&&R*3rKBJ_;x*Wr zfSyjP?VzRP*O*#swLcNfqVRwnDzS(PoMQczc$vgMOoZrOt$LYYN-bbY%>ev>DaSZl zhqmEjdb&|BMQW&vrqrVT;P~1(D^StOT4*zQ*y?DT5?DY4Hb;#DMPR1YgJLkv9*mn~ z??nL-7-}0zU>orFw|uC&A;WSVB^BBYA}58WLP@Xz&?W zGLC5*?lq>mw{$}!v^~G;CAj-D!McAl8-mKsF;4w;ApifAkJFB?y~l?W_|Kd1~<~{U^a;#CboF1 z14MBaP~tFn08y9%xG7-R8^}RSpeX>u;-L5o9jOW!HV38{lW1wPOih^;_=L<327jlL zzuA~xlOcI_hA5o|j#l3hkT`W(VTbz#HY6Dqg#q|rn;%ghZweUZ1d?j7!!Rf?1r`Oe z!!Ri@#bAfD4hmq*l(>yzHkGYjJ#1EUW7?`?CLHiSR5ORAR@_|Go^K3}1|nN6z9qpE zo&3F8MpddE{)(Y!n^ck3Fo#9~u;c^i=4n)e_C`}Z76c4)fTA88stOne0Y!ZoXUI}5 zrF)(n__#I!5p~s?_Gw0?nJBb;kz`e3&J3=A)x`X=(_*S+Ve6IoJmZ+q zZ+>-hptOyx^qEfS6^{3}Ka3h05XzA@KvRCkG~=MVuZe0+zD^A3jT0xINX*Lz)TvbNsncFet~_KH3K2dK%bs zH=6vK6_@~6(=j?_T{!)OTtVB~{xgH>v#Vwj-nEbvVcmn|)4`JYp$YFMfrr8IfHQCf zWlzUAmb!8rr{Ac;GW|xUBGd1EM%RJ@r33Fj{~p9Py6VrWH^ksS`?wb3Vx`d3qZ2~z z4O|()DR1U6bM{@4g4yaVSZz?5uIFJPZ;4zgohA*hVWyAyAgDRI}mO|s6hA@!fb@;2$K-T zAzY5|WrT|nEiR4)U@ORt5IN^e8s#g7d4xm6gg z08IDC<=?*f&4I%@_LyDKR42<&9rW& zZI-k$Gwle|PU7d%yiP`sN%Rn-4+?kXIl|`$d}OFRzs~0$$x01*ZsRjX!{&Q5_$#o< zagzy!y^tSsS3EbJ+-o}J_hLE5UKsfIVi2>J9$IUvYI0AOWEjga_FBs^_F_54-Wp|- zV1xupir0)JNMw&%g%Q95h8kb3Z|Yez(be>R53~Toqc#ev=k|h5ZV#&cA?*jSs!mUC ze@4x5M8nW?#;KjDUNqvzDjpb%VG9%S4gI>*5aD(`K@FgAn~Zd&a04q=8A+ktpK{M>qg)vhYM{lfjphP@I#7$`JKfO{tcY0W@W5R8z{Br|0&(&d}}9lxJzIxQmma z$!>^DtL?^Xl3;7N_(;+BS073IxSErx8XU9q^`_?^<8h++5es+7T4`H09N-k@v@MU} zzdED#rp*wSYHv;uvpi7?D#WFEq89H+RMcXQQj0uM3rxM`ji?3Y-tr)7p=<>5ENWrS zh2qtKDxfI0mh+%3;i7_i5vw#R4=Uxbs{yeVHAs+b14!T2PI#HeYA4#F?ZiE5GG!OE z;a#<)FM^Kkvy3Lf)?qXiqPh$#e-h$#f4_pBEt zExN7yOeMjdQ>s}%=5xp-JP%|1Wbr+hR;3`?M5zb@j;$0kYPF*cy;l_`W=v#sj32^a zRli6k1%k0AibMp>C$;<>Hp8dW@_2r>3$uiuuS!(-c|f8@=VRk17N*D>;U`<`o<+AP z{*eU%rKW0?56J|(lr{^3=2-URo)$IaVg;Pw5 z<%hur4Mm)m4c7c2o*%CWeVrieW@*&_B+o|EtvDfUF*zY>MozFgTLhiN@SRn96RESt z@uYh)hT6OB z!6Cn50RfVJA=@N*zmQxgCyxE7eId{=$!d%3ScJ-cWD)l(J_>hb?~28LhTy+9ivRW~ z{;X$2S&%gmeZ_|8qwP(&dqbn{ATKC)tDJF`r~>j@x{a9Xl@bNjCC0%_r{fNirX>>t|F? z`+FFK2x74F$*J7`Xb4Ub1btwZ9mD@!rajH^aDlh0oF{r)T>E>AZmeLD+Evce%`GfG zd6oG++FNW|>nivBf9!n=U{uw$_JqtNlVp-PfuLyxooZ;K1dWC$8qgpF(1Jz-dB{W1 z1Vh9mO(vi%kHi5b4zXM>_S#$PkFC9zwzQ?Kwe*D(0wf?}cxZzlMoVR4utq=jnLs0U1;z5Eo`wE_c@P4tro}_Nx2AbEVRje$wU}DxsCPV?jrdY& zXXRj;-31?VeIBQHc@{fDR!Jss-qB*r?>y#dURJ*{aIBL?ecCH&x74pMRwt7&~|UOySsv4Bb2AIyMo^+lxKc-1;1PYv`ojAD;4l!Jdp%htqBT4kj_iOaEyKldWGzbuvY>VW{>Qy7$4b%UH_8@ZSUj} zN77l5mtumg-4$;1)J_o>#~69D(PynxeI35hA^<($`C$R*V3&pkpf_I}7JwIt*G^;ip?$zN~`vAA*3aoLs9CI*6VeSRoBXIY?T@82aI;-|0xLe`gzSgQe z0N0sm)n>r?Mq-Tx+?))|_qfKY?Y!EmeUNU|>~LSc3Tq_r!%51}aB=|-QM=tcUv0dP z{3hXWVhmwtTc$N&SPDva-H}%iX!UHy;m?r^Z^Tj`YnD|T?oJsJIRl5K(Hw^0l#dIB zcSW}08FR*JwwQZx^bTT zb#pL%ZL<~cLr4qf%YRMzjq~BrZibvPkKGR}mhi*QK^V;Oh=qtI9`x#x-T(7&W^giH zzGM)j2YPxUaMV(i;!#e~E-3vnDgys6W<%$TQe5DoJ{oiqyis@0n%>OQUy+xlX%Jy* z-n6odaOmj|Fl_AEjKrMF{D69$&KJgh+2gwiM}ya0fBSv+pr;04+&VEfASUJKIBDM0uO!I zb2t*h!24`6PPBGv}emd)n zbK;q-SE@&_cE$EdI1-=dzdZL?E(Hc0~k}B0O)M zp$I(1DMQXc3R#WSDX0UP`A4(+<$iBlRwMXMDTj2)c7}VgbJuGFJe%y8vyzH3IUczZ(PQVRi~#s>O=4Avvm7Sl zY}lRIFol#=yE>roWcSs$VhUq6PMJGpk93^!jz8rX1ZjDi2h=-`){j4GodBvsIGq!* zKr0!VA%U8W+*~SXfFbq=%iBmxLnA|Q25IVc+F!SGVmHj<66yykuzq_i4_NYXU$v~ARqsi* zfe(xODoxa|xRH<3;ugT-CUlt*Xk(o)<_l?KB(@@i*ef80qkDinV4GZ;Aqy}H#V>Ij zodAnS#c4yZp*-3USD3)ZN4}zb{FCDkD7aoMC=+W7-aFW2a)CXTkLA zvUT3}wq$LU^oIc95`n{htaY#-9Ya|R(cZx+YlG*m>K(ti3Wwhs8(!|kL#TyR7#4yY zP_Md`z(Q_?g+R$-Bf5!PNfTN1sqF(NgofIO=Lp+cIeRi6T1qx8B*nB4&9D%=vJf5# zl_D1MA;rrYDxD%`HMZqQ!S05Me-Dnw!J;(Cm`6^!JigQT>b50yt2pb%Yn19WsWs5Jy`mw*C*+xtF8*#9Z`g$&UKeG*yuVkqSv!Iau>tIZq-+t)g z30*{%_^_m*Oit+&U$bCOMDYnZWl!mn$lKo-&k8CY zCcpezbSX4Cml$1&djv9; zc21j1Q*{!Dms3=ouy;RR;M-$G2bL4r4YM7;)U(oRNh*gh8j$7udIT^@&?mA4| zMNeq>J~D#lH{b93Cc6y|w7xOY2_S($=2{@4Y4-oXfV$uI++_9MZm)^Tr zz`+seOHGs)z0uRS6zS0wXsglNY`xX01v1^EKx(0u@6R_7oy(RGA@f0jB<1@@2O-4* zStO9;eE+3E$gKjY708f$zdZ;^7sxV!xbppfdq~fbbJ+y~SpkT5V#*|Rl6D7SY!w5U zD+QKH*b70}L4mCjiX#IH)ARkmljOK#`Lad;%e01xqjEcbghw9c-5!bf6Ff}U-tk=o zKKm5nqP*ocOw<6H{-DW{hf(4QX2g!j;f?6>By~(jaK?MrS7;07XYBV*ObTQ^&D7nI z*1*WfeE$u>(f!{ub zYrcQ5Bqur=Dkv#H$?#qO=o)~XPx_#U-9aj+(D4mqrUE73@2wNnG24HU;4~rroREDc z7-uVh8SmB4Pf5D|7X&&V`2#xjGFKrvq<-}NzqJ4cGA*DI*%qj_1~T&f3q=LO-BL-z z3aImiadxnk6-?q@z@D`OBv~I91L)8NrtotlrUPK_xMWXz1fYQ+^lN}397+SiF291m z8H96pkU(Y1;uvEyX!=hYG&SEJV}@p;CXmpy zeE%^cMfW9vg=wg`I-~G1C30xPS>004JC{deqK$gvW2r}ehUZwd_z76+0apO`XSkAy zR_)na)O$V7>n#XmrnAn%t3x0&4NnFBM~uX3qBDGVqvk`qF%pn6OM$=4fVmIx^*SlT z7swn1*!4L{EQkgETMPu}vM8!0hZZJpmt*)|zOceQcT6_Sb>TSob>5b`4j%;QzRc5+ z?M|xe;P9S0R-$2SOb3VOHt_wlgQZU14m+OV6QWx>R^u|pf;!KgFs2r_nwc9=H&{BC zZopSdOXq_d@U_#@`He9a7ZS^GUopmlRTu6dV=S6Pu?$3%D>k4Vv2;$}Kn6Q=Hh_$! z^TrMFyj?fOk`2t^V=T3}4IM+?7RGJBcNm#V)Oq0sd_Plp-l`J*)2IrTKWe#{Jd0li8Obous;xwKq}-oR-s2 zZR>a)_l@MMqm@rgzGEvcbtio@fj_YBq-8NPzflAQvX+hHtAp0M5jnPWunq;*!U)U4 zuemP<{XZa{v+m@I!U#*vFzK>(F5Dz)W zW;TSCU*I2z(_oYpFUu0M!JZzG3ti}JxNf&j+cE&Q0)B=BGN$>h zMtpb81W%JSYoVj+P$2UFYxC=-`M+vH3p_VPEW99)xmoIY>ok9y2^#Ia&~qwc;c#@# zVI-#_oU484Pg(=tum-N?P?|dh&46o~|8f)~&t~l3<&K@M524L$!V|gP(MR59?j16Y zk&E4~8yq=kWzpBcU=hR*A!tenOEHC6ilixo0MsxskUP!4S?p5@A&__d5(?oN)-#3x zB8|AtWqS}jkwRGFsA>;nb|I^n%`*v9E)F7bB`vxg6vKif(8o@AdTqdJJ|n;+E^e5W z99W=HzRwwO_k#xMzv}Y6cA9^y3BAj6V^F>eAm5*wpqsoGP`+1sZwry{0$siflzd-E zMpXoQVBxGH4h|OK2{vivP&N#V`;jN3FXQN=gP^6`Y3X_X3k;@eY%*GF7+aoyhLi!y z`JHJ}N-|C?54bOb39J3FkY3WXz{vG^{wL<^5_3BzWOY})bN5VRI2BLk5HQ+%L`hxl z^A2u-terW7cTgR8*~Dw*UI`i6h8y~3_WBtq)@k_#%eOg~e;)!s8BM?QdS}fjl{FAQ7@-KWwO__s)g&|$18QXd)EhoD?i^8A;ZQBWdUkyhZkJb#iI_zLot zf?U4mz8L)%FzX6jCmHaXVa4AKT(${(OB3y0t`0(<_Fabk}j{dpXL zjckluzTe%7)Q7BE{vJLgAaFR)B75+Zey3;jT1(AMd<=|So9BPbNXEI0Gu#oLhH!85 z@U6LcPHnKRhr<3U>`I4t2#`8wAlpfK{@a3aZ7OcMo<&kl4?+*4z-4t;4_l=ti(86h zaz~kI_f5c|CJ*FzyR+t}jC6WpNt1)m$Uw(6@QA(HGq&MO*kQ$44xY+8IQQas4PTKO zDsjSI`BrSs-(x9Q8{u5`Z){Yzes}mLq0qA{&@eH=xq=@xxLL@<3-I7f9ie^Kp$$X# zq4pu$Bu`6EwsZO`-uJz)5BEFs_VFm%q9$kIexA9U8t)qm`L8~tIg4I)&S-QdMu+m>7d%n(G`q51TJk&@+W{#{W+W%= z9KYPgQ>v#!M@8G=b{qpuJx4p2w8My}H|a{*)zk1GwSsDR#d-1dp?LxWoDZ}0@HP*FWvEhh2BoUS`wAvvVhZPEjH&10U^^V> zjN{99i*2?#FUPQ`!5_=86dfC_oYslssZ$59V)4W2+B0mfY&_lNb56wvlOkI>!sj|? zv^wui3UTktRtHm2}i(4?dh~pJ@FxwX+gmXBv}`U3*Z%diiqT%z;{94dGDKfFn$GYUaQ(FBfB zZ9wZTqf9yt!dbKL4Lq#5MBI#DhB!{PXCQHo)o<2AAuL)wGqk!C{V|N9M zlN3J7%`6;7m1q>FG#$HA6(=-8$zcr_GaOPaVj75KI_sEor5y$c>9J0XhOEw7C%V{A z3h8h3Enj~ht?a%{6&0ykmD%?$EFtBqMUT|_$;;Q1dX(CbC^XdGsaPNkm=cTRJ$jVv z@FHon6JbSig{EC4y(8CYQ?fW_I8GNPeRLkXqDM`zw6g9Q9N;O*(`OSSdmRrmeJ_H z>N3^@NKCpfAb|3V@|36=!zI6lioufPgzu+dCaZhtbc7C-;>oT}5xN_*+7M?3IzP}m z(%%_cQju*S*?dp2B}CI`&l1Z4S&%^-qx7<6Te7Kd{btBB#Smq%gNQZ`)eFlo>o-a& zFreyN;YAp%pl2w8N@Ax&TARK_*9Q^mU5;7c@lsVfv;VrARlnYU?WU~4UoKLI zT97}Z|LXk+rB3tilXhTLzvb=h{nwx2iv(?LHV9HsBDJ&jUzh6GtMsZ}YUVyYC4@@9 z>JA+{T~+Nu-stTz1BQZNyYfDQDqVU?VZB|xYMxa`+FANbBd$~SyFs_#6{h`$)U+t@ zA^j!I-*c^sl&d14huf#WBvE<=i{Z_%T;LZXCN0)}f;DRHix*0*L>2J!jWLn}o5 zx!A+^hbnu>{Y3Uqp<}Q4MD{S&pxuu>Fa!T}_AoS4sdl~6Q+%b|si||=gMXxoR2ZV% zUj66Z_V61$N_t3?PiYSr*^^;lG;)K7fDG=;VrA2S2b4IFbT2qg!8JG__U+*2;#)^Z9U@zhD>o*t}z&g zBdgOmTMeHYmRzX!x6y_;nys8CXqk}JwWy0_u^oIwHlpvDlGU|%`kzo)S%7vM2yH?8 zh6cL`^Y+RyAjS?d+OKCalq6YQ=5V3_iKx2Ml#US9%M0c=E&4fLB$Bd&o44?OvhS9%1_EQFuu-V z?xb_*=OyR|S~OIYCMrU&MOP72mga+kFx8U7O0IKiD8LT^$e+*KgmIYR`fzC)E!PK4 zrK(X>G(bu#Ak7scY0I}QnWe@*vp!m!+pv&tV@9_(TsH%*3F-zCf<>QIHRJze@t(;# zxo92U+|r;Pm#C*_aU#-)Zw3@^ZZ}QL>RI$YI7`VowfHXY2deNl%r@j%ko)5bR_rX9Hz;WOkDA*HLQk2kV+(5Wil$x5I0YZ_;S@Srk{ zw-3(C)3Ry8kvkdRXxd?#$l*j}|7Vy*$22Zb_V>}^`@`~%1n;5{_2C&^>iY1Ewkkvx z!Ut3GFHWZ%6c4vC#7Gr^V8=-NqeYmUI&(TdhnNNlcJ0u1JSz?R25JB%8w6uCS{uyz z<995jv|I;25IXX~2i}w`{g#4d`<%<#0Bsl-!Ex%=U8k~kIahKj0{8!XxE2rk+qrjB z`1th8-ct=V+VCD{VSF}QfKT)VVSx){@OWnr{em!|73@Gg`rA2-8ZwY?3lrM$S>Q#y zgpXrI$WI>)IXIBGyos|zftHFP_d=A4SuLUC1KC!<#-iLc!J(o|%s!2G@k3A?zAn7v z{Prf}>q5xTL$9ngOmldTH6%SYyvv!IsWEr`XR_D#kvk=KGB9zfMU7`;5aP^E=X8!k zNS1C6&ny-mpfsN`vG_&h=Ju?eOa7CbCWBMSZq8|BY4|>5yTLINfffivGEQoZ4U%I| z#{lFP(m;MWm4IK+uuw!kKR~Vg#JuulL$7>;`v>*f=ljEF)a~ex(`_(|=TPc<%o#r! z{UDgLe?Y1FdDW7%@%8KT)$Y<8KSr~re9xg>h;DL<1FaHT6SO1+RowIf6HlCv58+D$ zW|kY30;>(@RWht!HJG0>>HL$A@_VHHZu!QFPmeI5cstBp8aeQXFI&ER&&~kC**$0+ z-nD%9k~r^nq3ZqU*iX5O_b(uE+0T2$kMLyFe#2iwe5wDYHQax?Vg8eV81*0;CmNs_ zw>}1{>Sd`9AHbIkqdsh~UKd&;!nmz}09~oj0Wd02cE_&`i8e7bl39)BSUg*-S!b5i z&zv<~vb^IHjaR+}MuX#({{r7<8n47aCF?#kJs4izq7Q;#AcW(TGtex{SVy0M%5&fv zXw}u*mPo9c6Yu`f`@~ zoYO^^DxrDf39h$eAF%pKR!-;=BHNIMQsKTut~*p7I^zR1c7Mv{AdJXPdJ0mN=N;~# zV#gY)1&NqPHx(D8Mg$KYi)J=u#WTN0YX%%`I@ZpqKVjuUL9hm>>@N7!WdadSNOjnxOaHqV)en#KOpnuzqPu$fC0GhZh&$c(epMczg$ zuY1BZzRs_U88_4%FYvTq@*-I;a}{CbNlRc)ONNaqug^JNpVI?-`_Yen^djS{07Ow? zcWl-WzQ8A$3sArw!^Y0HKwccF&6-UfYWH8Y>ZP_9;oiqoRy z=3qkSFb0f^^cZ6Y8!5#i5u_CmH*7`NigDI9pUun)cjoBj564#C& z@nTg`-6)XtIafD&8=Jf(ejVW&Y?0m-EMwERiB{V&d6kx5OVP(<_fcN`T6 z`FWdfuV0KwIPSs2k0A)hBIy`IS8a6}HNV~@VSk7Ts zSX`hcsQ^>PA$J&Na%nD^I0@-woT#rkjc< zdpgJBnGiL*NZZx9Yu~PSceTasuQ?8QS9dW6?puJJ-2G1EuBwDA;4QRQMQ0)Yf{5EN z`*-W@HPPL#cei<7w@jaPH$=al9UPY=uz-U4Bt_aV`2=@&nvqm9pUzj!* zt3yFxyZh4I@9i6%GS_QOnfqhSQdl#P`>j~~2XM*o{T|m^yj&KX0Parbvj2b|bcW6b z9o&bN3cd0XKDk$5NNLjt;HzTST<88hbDf=gnfyouyfxSP(O+@L7uRD4aL4mU2&*_X z*SQBTfpcG;>%0eDr~UipI^TQ+5z&=;|2^PzAZ#bXK1A3DkW#y+$Fk%y5J9B(|BL{< zGgZHizSxr8ahu$_a9rRLAzc6+BL~B&oQzF=_wlBB}2MD___&ro>@n<8BGJ|XJ)S0B7uVARa zU3g+-L)+Duv!}G}T$YYxl!j07NsOrrPaPMk^xKe5%|OOhY+v1IpqHk zQWTEbqZCK$$t$RL@>e7iIzx?pS=pb=$l%wa%+?!JaHgb2H#x z^id9RRrfRSsNfAWSR?pRGx#^iwFG+t5jB^hdwOvmd(?jJLYSA&r=^Ifp2`pluTC~k zAhKqXqIyq|sykB!jhFO0Q@m4-cq8rzq?cZ}1n+IMNC(M{gg8B$li3krx8{&8H1F2l z!hzA}do%a4NS&w=Lzf=^PDMxW^1p`W$-x#(UI}de??Gh2w0@0}ifQ~rQSJF1*uMtT z9zAb4BO5Q;7S~wRaRsc{42?EIdHNV*)Sk?)9$b6URUPI0(WX7^P2ScFU+r6$?0LH> z!Cd1FY*QD>Sp zWm}U0yU26IifX)YuBUzJTu;wZ_a42vXt+f(dc@^9)V0sI4__eO!~n{h^QAw)UKRVI zqYrj0-~G_V`-Y@=9VvAmKo_-jjWDvMo>uPPndI4R=}gn1D!fgFzi#PdHzuij6R~SH z?87Pox^1C(pro+#r*xlNyqkwvx-gNv%aQTe2Y*!U3f~m&?#*;ZfRKtI{LxE(K0b=?z7%4@ti{>*vhCAZ-H%A0d2v)o-W zAMaGCOjOi{nFs14y*a1ja(d#L>#MExU$@uiIcl)4)`4MNHwBzyd{}kpzHH3wD6Cr> zGNzKZ!DDixBDqX(HgC}gjI`7wddG|ePo7sI>gAy`N)K3kJQ@ij%|+LgMHgml3s2Wf z(mS)gyNP@3xD!0D4A5yrdS`asJ?qDKPqVn^s{C7Ecgrm#++b+P~O6cSksm|?h{>FM)PglyKqhZQ% zKUTU2N_U{@#rRRK--9?ZqxXmaIRsQ{ov8!o64>!Pu85AxesBuMbT|}|iigq|tHl=> z?80MiVDJ#!1DG*>Km}W&_4i9|%kdA`g=ICM1Yz%Z9PCmoG1i^q&Or zW^2k0B+?+fmSH66SQ47N&5ruzE79E4H>}|G$z{BLzn0hEEaLS~58^s^<&)3Jt>G!T zecvs&<&|>#(R{i6tQ5DWzrFlv+`Ku~`sJ(f(7=Z^cxaY%DIIV2>9XAV<*Nj`mYmE3 zCx`)Nnse3;wpg;8bJnpRRG;&FU~n?@TxMw~40P{r$XSaDMCIVi`%#$BG$|8l$mxMa z&_>WBaxB|lV@Iah%PvAO@(i2$3p5YG8n^WR6&T&bdVl;_!DD^8)&MuW9TU7{%;Rd* zOPIc{fWgG zvWz7M{_NRm%{o@q0htmvnYg@s9B#0F^lq*@vIe?Ei;fqu;Yi+%eiONh`NG&gWdt7hupB zW0A0;cF^*}b-{sd^|71KGUJ_f23~Y$yb6c!Bs1_@nrd66CseEMXpq@Zr@oE*AvnAs z7j1?+jtQ~0O2tg(Y`F)+bM^4-Ug7C_xGNZb6twW!p%CxLg_u43epAOX#d&WL8KSuy zix?n5tblj}Pgr5>!W%LASCFjTe=|BFc)`UpwhX{k1I{S!UKfIMv57N8-+6-*!d%EB z#$52ei38+1j-g8P7N-<9bw)ys)ZZ#oe^Yh+?YFJ@mC~J0-CIEdvMsc^e$8;`PKA$X zRrkzxxfj~jE5GPYJVADJ+Vr4Kd1g?3r=BX zu1dhvYqlPq-YeXthik#`KKkpN4>3@AhJ2{7epGcBuO1(#swNYsA60cEurL>=a79w; z(AwwG>{VL5cJGdwR#JBLCDtq0@U4Q)M8`Xt%ft#;*@m6 zF=Qx1s(#;gxOxy$f35Rg4pd}duxS%|-uY1e;C3*?dl&AV<7NK?U=ChSZzkD-Z$zsg zRex~hMzD-gl>PCmB;*u^m87V>+8LvR3U)6)u_$usK;)JKObdX0>V06n$Lx=={D!F& zzSq=HoMP!?uc@3AJrZkF)5(H{Brri|G^SmTQpsR4rzD#?%q90i41uMNNLOLd@Z}EZ zbH*MNBr56>iZsZy}IVk=4S%xk7#G-$1lzZ{1r|GlOTV z;4_hRe^Eh2sMS*6AgGe$JD}EV_$aPjb)CBJZJ8wg*UO-Y!ov-;*uuYbH^K~Rfwmc+ z4k0d#Cv*2ju0|f+iBILJU2vEUgX>=Zafl-tom$r9J`nP|NQr zC@4ejMW_oPd=(a-E_W(nOG_jGsJL&4*^f*wX+@@&%FEMV0Nib@JNZbqc!y?7oHHoy zTUzk>cE)CB!;>^=!S}S^m7?-Y8e=t(f zR%^ZHIxk3hRbfaI0(J{CD;1kVYvnHCpkD;F7B&;UO2Ru~7p&Qf%mJ}gpNX9YHJV2I z{yey8fh30dgv0%?lubj|;2DF?`&lkCbpQr$H)XC@fHw~Ui2QMQct54TB@&lcqZ|Fs z#&?~t{lV!%t$H`*IeJUG_%0azs(Lts#0ktMij>uO|*1@<5l&*A?9#yiH;F?P{{x@M5LM8@K$HTZ_#7V@XbZjI(pxtlpCGD zotknZres<08EK3KrQJQa?(G1E3+lF8B2hZ3bjtp;l!o6O!q>;{_q|6O&qOu`E*aj9O((5Bys@B2S%7f= z*24!n_H6@YSHtQEB706HF1q0j>xY(&VAJ}c9k&T>+mSQZ!R-edfyi8HAd}?706j;q zEeufHb;j-=k&fJuQ=P`XMxDxmZFtZ??%)nmJMhxJ?FXBXtxb}=P(}D8-9Jg58{a_P zg;5o>ypqRkyj6^E^d}8tuDjc88CDT+S}vyFOrnz)GQ941dpyk%7(Ajxr>2aDRI>q2 z!>%se{0ayp565I(;44|>)}?N#>Xwch)R#>P$PpX=?1O)UUbgIOq-G$$125^BYJ2(M z=6x?6+`6w38fyebQ``1^+vIukzHJ96!1R4S_=&ao;C4hC1@g#$BcwWFHiUMNYLI+8 ze+#o*?t9}Rw-u&yW8>kAz0ID@Q?X46mxgBenqiW7@f&AlD-i^6e*|vl&2NYfjs>1` ztPka*H~u-s4yC^5%hg%R6L$#u{L0eF7KD83DN2j7+Ic2q~}KgsadyeRF+THHQyJ2Hyx zNG|h+E-PwEMn=WDZQu3-jt|!>f~3pJ8}iz5uo0DNNb5v7>g~uVd6sqrwcW_Gv>l_+ zIE?cD>6BsYA#KMUP8^kec#Imic``L zZU)$=SZ+}_W}t1y!6vkSY$mp$(O~1TN%Hrygc8~amFW@R1zA#$A&&IY|Sq@sqtyK zJ|)-Ha$P0Ym2!PfuFK?FE7wJGeNe7$xvr3F@vlg&Qm(7y`jlMP$hB2)d~)3(*UfSr zDbOUju9vG%u6DUvv6eu$@P$2+vPf0Fb~M{B6+Tr>oU2nkn2jhu9oXM z!CWWLPs_DULLBm}$@PeY_~qIn*U=I_O0Fq#ohsMya-AgCbh)OYH>1V>_-lc{hVggCYaL%lZ&(KL8m1iRC=~ny z9cx1I+kiid_>Mf_Uu58$^iBhQBjHbx-bbkUg`NrT0sLaZHxs_!fHzF(3Je>C@8+1h zia}QYd#|#9VgD(E&o0D!2Z0+ZneGpbc*cmMiFX`$8;K|Bf6KrF{f^Xzj{-XR$9t1M zf@qI2S{uoaH=-HjcQj0C?eMQu@pt61MmH}^=(yrud3hDq5pCn>7)49_?)N^d=!^9_FCB&ak{7ZY`GkDz54>sv z&tSsL7V#b@UU~uWzHZ=|@I!!?6W&HT!%aBS>sdi19>MhTj)v9xV{*sMy}3wd?2*$D z`#m%YIs=r~28j=Quy#ygd?Smr#gBF)QV&J3K_Zzz%IP41D*pyW6Hb0N5?;y_ztsm$ z;?EH7Vt%F@@P;WnI+8brFtG!83y8OxbTSM)Lw+nz{>>ryl;Z^A`-mUe7yn2{>W@S4 z+kt-p@sAUK59Z_fZEmY;DegT>m4$2&-loZ7Bj(Ij$jrKa#*Ty$ImQ)SR|l|AgN0_agpHX8cUX_cQ*{ zp70DxzU&>pd4yR!5*U_@s!xRlh8;ouEzep<<`W_LrilO23W}=>L2*qOMQ_et>|O0# z#(iTwC40|!QC~gP@=>6P75+`05Gt*p@_kTIIs8}B8$x=yz36QSp|{~o!xUdf&%>bS z%>iJ5kHb!|!MJdIgmg4_k`@>&J{B*K(i^6Z9QED_wLl?BZ5~7`^E-p1WQ7T1$Auz0k zhHK!neaR$#D%m*tp^;MqzpZ0!ZO|+qYe7!}F(MH|S?0-?5qAbzdI52TpGtIT8m8Dg zUW_>%tSy<&%fy{M9k`F_>99R0Wh0w|*&iqu9DTy%8I%jZr?E6J?0J4W6^}hI%m3PwF~ocyxQynGf3gtHUug9?Rffl z`a53I=`*6Df53bqi4gj~vtV*ZhYc|pc>ed_Ac4ofA8)CGD}=ilE)8xV+?l82E$_m; z2Dbt3X}DUrCsxXOHOmwK8gH2l=YZS(M7(7Q+|6)NaDV)lcuT_ScuOko2Uf*f*267= zn+-PsE)DL;x8p58fh&Vcg?s1mc*}pl<-;Yz9mGPYXW$CqlHq!gZX4VSyd%w9LBAI6 zUAUAd<1O>yo`8D|&iA#h zrEvLh6X33e`zqW8a8Yn49z(it2jRBDJrDOB+$y*S;fmp=!i|T!7A^(O0e2_T<}2CfzOZ^OL{cO32v zTt32M5&s_CufTmi?hD}fbHV=_p5M{s(S>`v4vSp@Il@haTLQNhZsVizmQ%Q2iZzxK z;O4_EgS!ji?QnYmTLb^^;SR#>SRQY=0pVYUJM#!+0@nif6Sybf9)!CS?n=01xE|oY z4Yv}Gzt(TC-nCeUTx!wUzk+AnH8_Ty?KiJ{!JPT?ie1(2s(I!2xhgBF=eg%qlv{Ma zyQ0E1zoPs;%Y-@e=9d(^+!d~St4ij$OI+^K64#uX;&}+Dz?9Jk-Pn-C#Hpw(DG$LY zE?F?|-V)2$$#+k<{mv<4r`~uHuJQ`EYhJl)j?2iiWTe71 zr@DIHedVsn6&01P+=_YS?&>Sa8~w`bs+c>sy2Q>FH^% z@ikR*D7VWQF(lsnlJfi9rD5^PE6TrFQdI%O1ts^oE2>6My%A#7#cV0eiPzF^2Jhp* zJ6z>>INUD>-Re0HRL(C!LM1o2;I*XTdT;5R^74}T)eO0}qNd!9hdEVMa~{GysE_#- zbD&~?i(U8B%$-|O<(gYn@qkMatahb_>aH(tYE5}{O=V?8l^YgNUh}{`h+i?+6`Hi= zfjN~|K|e*s9qUZQ3gq zZ4TT6aJRsfPK?)l2%nDU`{1hKZifrzRcue?buMgH<$`+zI;UPuc@P*qaxo>S$f z)gzd)eI9hX<_38<4Zl{d{NpFZYuOK2G#|Z%Jt+eFc`(5+g zWY03S>LHd-1grG)qNh?#gI3+HImlTlRAVFugP$`W`73_NRaH}7j_9BhRLDtX3H{OKIZ|N+b!;|sq%vwqI#amp%eh38OGpRSW2N+Nv4pb6eOhU8dpdUS^1PymB4$=<-v$7ucp;qX_*#cf_hr0c$B@5ojmUDoWiMh zj~kmib=sXds8f_*&yuAO`fG>&T-6rsIXtI-GpJ|kbIrF{N4DI&fp|;$)+L5bx=_D_ z^3k^_uq3HpP|lU}=RBmVUYXksdP%IDQw7-~>(#E(ISU|Z80I}Cs5s}9qYg%`{7n=$ zWhlXr)XQCS=T%jUQBZVYkkUETiUO?*kzrU+1Y~Zp+&s@+%_>V348@3RPF0C3{RY8W$gRu4k2xYuYKi%|kls+plr5|`!F1#6hY>H(38!9(uTNdNm-o&F4Xz`Ylp z{EDi3pc+-lRaBwq%qf;aj?Z%VX_i`xp{;4I@%i0{14E4t`EI}vH7}r zsEiq11CS1F00_L?;<{&^+m)JUHVdjLaaF@;QSHE#MqPFFwO3s;@~Vt$h$?ywEjuCj zY`VhAw=#?yTsa>Smly1r# ztaCx_3?^ApL-{e%4B<-(^J&Pfb*)8P^Hb#Qnqi#HLGDI*Gadc-TM{NYhqn(J{l1k~7VTXaqLHIo|nS19{qvvI@ ztU|opUqZLfqg{nt{|EGe{$$ZQtF78>(8_K^e_{(@TVVq)qMrok^Whoc=^JqWdc1Zc z;*(Y>oMTG7<^ms;fUQS-Zn}q-z}_Bg`7Id;`d9;8*1>y`6ZN_a#3^lETC4AUWtA zlZ`BlV}~P73>?$KT1qUtuvoBKNPZlrjX*$z)fyFLx5vc9#>K@&*=*6#c6)4Wm?zHR za3n+n5EBC&N1P)O&(ZV%;7EvzV+=gU$Ax<09SP0^P$ILZ^0)k(H(+PA!90~X(!V?=G7tc2j=Hth3$uC-!ENb_)TP*)FoB8Fh zeIw4N!jFFDow8&c%7%HTZ1|&WtWg8)U>y0jS_j%6S! z(E+sB*m#E7t+pt8Y!shtR$FvTbabLU22z6r?TImQ_Nb_+=$KgW91D=0X&1w3KE)Rv z`~4}sDqbV4R;2{oKn!9=fO?P{SvDW26lNjTe4r10=p=^WctDEe;|{pB;6tUA+fExY zV|5@*}}W{nsmh%njs44#^~B zrUH~dB*4Hx?m{9+zEp@FgBc}3gQQ@D2gJof+5Ck>q2UGtfDspGKzWa4NJs#D;Q=uc zB@~AwNQIUzzdjfWAqB~J)Au+?Q z{hL0XKkhiO0{KujP}v?@$EEA}>n|UlhyBrBMJBq8XwQailONhPf3$7AxG9TZxxv|X zx?RF%`VFAnisdS}BTiYeUL>Jb2Mt%eI!50Bre}|_OPQstQP(hl_)HTur}B~mz)?j8 z186!xh&Ql_4+`-JU~I-G0_s#TWkMMrRV?aW0W!L(bcq@Cp@vp*O?U#!H)ThCx;FQ( z&-G1x>k(U&Bf*iNB@VO>u*F5k!t!FQe28}rbVfy^;*5*e;%ux!W8$3-TXYm25Chgp zlZ;QW+oNqZn4uOEgW44a3LdD}V{rDZ1|M2G?TY;I_q1N$_Gec(yU=R4W0 z*-`c5f!2>UP5sBAHG?1_1(<()d>BYV43NWi_E<602L%plXxAWB3ft+7cP6mK1SkO@ zWD+4xJ_sm`pq>_yX&fpR2{IO%N;aB|p1_t>ko6=IoHPX#SZ9LhjrIS7Th3ixKT98C zfK_irP+COz7St;0;j>-Q15pv7AN7F7^|O&uu}p%f=Xz28N64O!`+r*krrDTwXg++l zjGNI>y(p9{gy#>V+r|GOk$?Nh;;migH-5@LsjVcU(a)n}q;@?#bd z^WihmJ0I!11kOv~yadim;JgIROW?c&&P(9D1kOv~yadim;JgIROW?c&&P(9D1pY5e zfTP3De#v4fZ0`SiS&IH0R(+#Y-}x{v1S8=5mk*Hm0EP!#F%riRelUy0hhlta#+NWY z#Npo&26Es-xB_u@2YBF@B7TQTf6L%wK|5wAo8Rpg>3k6H=Ou7n0$)@Kuph^{Pju`{vH!>Um@c?4((f=jkzd688+~E+ zxsB&9lHU8v>-m0he^NOgc3uMKC2(E>=Ou7n0{{0Vz<%);y>HAuF@ImQzOk%w#Ber- zuX(|oRV;Uu3%yt!g`sLJ|A@r{*4)H${geQ>mL?kOr#RkC0G3H%2wc{9VZjtu&8W2) zSdfvBpa58|=s=`+uBX8|8eHN@o&>Psj2HZKO%5&$r`JKREPKRKNFk-;832P+f*=DW zo@+_4iV{wPb812l>vdF;2@*!26SHZ9iDNNkFmWRdhf3Uxi(F!b8t?!J<^xMOC9d!% z2^nc%848ij#Dys=cZt`?E|$4)jSAUCm=os?f-4PK7VgFC)EJ(KTqGt6`5N>l>?k>$d001^i#BJl(+zi}pj2`+^}WIb_+NiD@;D1M3L zAW=gu0AQG07zVBgWg6mTI{ZT#Oo;S^KqBtsNdQ{XAQ;zK#LhK;_{SnqN=@=B7urI< z0ECN~^-^u9&atkGjDtyv&Ph_DRZ&?;8U`sbGujZaDIw8d(3C}L3cw|0VrEXNm1~Zu zC|ryrDJuj70a6T@L6x{D9z?K43EzRpi?VUG)>q`rauj4z(m_6`H`pY3k;PLYXPAHn zrHH^JUC}Q!D2n1TDp_WQRm98|xDtS-nN+AtQh~1IqVPn&2oC`uu3>PZSf$#;K{Q9$ znoeLKYyn|V{Gfrzo-%4D*fz|9<|9mkUD!|pyur8vAUzGaMR=k%NKq!^Odf`wsFAv? zO&+Kc7Xkwj2{t%z;GjXU^@05w90ZG1Y@v1)B4;c@1KhC0Pyh`R#sG%H%DIM0CRiUR zgHy%X*`LlOZ$h57pz1ZM(lAk_bHf;@6i7`L!iffTol^^xghrjiC}?X!nL1>lOQf}j z)N4UQ3aKo6nT3%LSxKkr2t~9Xqn5e}H3QbsvdX|}MqJ1g011g)fv0q?xJNE%aJT?l zWq~?JMMZm&`bq#2MvEXQk-F6Fl(r=%0G&d&qF*EzYM3yFBtQYuv!#n9qzqC*SY$5- zhl`Mx3jtD502zs!0F_Je3a4VvG`m5POC3+l5$S@(fmk6gR)Xvc8)Dva=_PD(FNM=! z7py7%AVjH4#3Fj!Pat>ppDF-VV#F1=)JS!eO@qu7_paO_Kn7E{)>s**LbPnp! zEiQu~cF3G@frlFufpQLLqHs@Xi0Be=*PA=WFsmij8vrndkm?68Xb?oqDuh(=8$^4P zOA<|TAlMcHNeCM>I0-g4aFAF#^M}M?{082jfl}cK0D-I%2PO^z#iT(Z66SAUf|kH= z)>mXrijde9Fp)HVg9jzyPox8kq$DB5j3=Su8}w-mPK1N@yiaQ&t+?I|VEt~|)gYyF zU3ri=Gl~3xW3my{dARMWx}8N$bz;O`RKEl{M=;C2s7$EfGDz1OWg_G$euxBu5d#4V zD*)(~I!U7B`YAYM92Ta^5pBp!LuuNuL=)iD4T)A_8nrZDdQXP*07JTBaFQ-K9F$0% zBZH>SsXc+}I!6@RDT9>_4P?<^GA#B9Vn@S)qfgEUeejNm~@!asnjxS+rQ zfagJj@SeoA=9%2=qQ{uC62AY+-jF>IjIs9fp=vhp{c90>sj*pzQj8&OfzZMo8jD8VVqZ2RZnh6URUuD8?~KxtKY} zU?9T8D;I%&&WZn%$kF1sXXb-WTfci|KCSOl*5CeMXJhg7k~rBT(SW-j3HMK~5BDGO zhWk%{Tlv$Th|?B58H5e__c(3F+MxgR&*QY>U%|g67-ppTN$&c#b=-IkJ92RcJM2Ig ze2m7XeiFug=|Ucf20X0nu*;)7@ll1TP(txD!}w_az#Qd?Euby_fri|twukOBd0dyf zm3v%T@n_>h$PaPP_Io-`?Q?3tk7(h3x4sXm3I9?!{7|a$A4zj)%dQH-(yno6hcbfx zA=qbiGxo!D>%1ED{?Yq$vtq*RXGL+izojJH|9ok!=8NnLW=G8plkW0C0{MMUn{)0V(>i( z;?9B!gb%6Qvd~--B(eCpfw73A9vFgu`NG8yMjTU?4fhldzEA*!ktTj4!ncC>;2I-? z4!_ER8W6ze*d9+wbg$L!WQ{rwb5IG{-l;zZR$(0+S5COVg2#* zX~QNT4W~E0JKXPx4(}IOW5fL;6O{jtiE-M~UkSoCUlXTUM+N=svf{MkH^yn>bAn-? zhF9$S$&Li~s*R1cMqyG7djjH-mP7XliVBa#mcu3zCe#z4g#>XE2wQ(M`h8ISs= z)+&$@&=?pV)Z=Jq_+v1>_;3Sc9S1&SiuLu6;c_oB?CzO%oOCjqcE(={*2VJvS@u6= zy#9Wt+r#%-J(6e(YZsP%DcnEA74APUEZo2BTIFAqW7Gav7=)!hYSSuL2K~>kwP_=N zYtt6}AsE≤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%0DNjm4`0PNLSY+l#woPnC9!y%E;HF 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