From 171650af737f9b099c323a2a06e32d20f39cfbd8 Mon Sep 17 00:00:00 2001 From: Andrii Solianyk Date: Mon, 4 Nov 2024 18:21:33 +0100 Subject: [PATCH] init commit, with sample code --- CMakeLists.txt | 26 + SFML/bin/openal32.dll | Bin 0 -> 669696 bytes SFML/bin/sfml-audio-2.dll | Bin 0 -> 1656636 bytes SFML/bin/sfml-audio-d-2.dll | Bin 0 -> 3548552 bytes SFML/bin/sfml-graphics-2.dll | Bin 0 -> 1232362 bytes SFML/bin/sfml-graphics-d-2.dll | Bin 0 -> 4471386 bytes SFML/bin/sfml-network-2.dll | Bin 0 -> 202212 bytes SFML/bin/sfml-network-d-2.dll | Bin 0 -> 1399262 bytes SFML/bin/sfml-system-2.dll | Bin 0 -> 113971 bytes SFML/bin/sfml-system-d-2.dll | Bin 0 -> 860535 bytes SFML/bin/sfml-window-2.dll | Bin 0 -> 240055 bytes SFML/bin/sfml-window-d-2.dll | Bin 0 -> 2452023 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 -> 226468 bytes SFML/examples/island/Island.cpp | 590 +++++ SFML/examples/island/island.exe | Bin 0 -> 1398020 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 -> 1395934 bytes .../examples/joystick/resources/sansation.ttf | Bin 0 -> 28912 bytes SFML/examples/opengl/OpenGL.cpp | 258 ++ SFML/examples/opengl/opengl.exe | Bin 0 -> 1378852 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 -> 2886867 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 -> 1411561 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 -> 188477 bytes SFML/examples/sound-capture/SoundCapture.cpp | 94 + SFML/examples/sound-capture/sound-capture.exe | Bin 0 -> 1649399 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 -> 1648710 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 -> 237616 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 -> 668951 bytes SFML/examples/window/Window.cpp | 146 ++ SFML/examples/window/window.exe | Bin 0 -> 269288 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/libFLAC.a | Bin 0 -> 664198 bytes SFML/lib/libfreetype.a | Bin 0 -> 829952 bytes SFML/lib/libogg.a | Bin 0 -> 67928 bytes SFML/lib/libopenal32.a | Bin 0 -> 122396 bytes SFML/lib/libsfml-audio-d.a | Bin 0 -> 138178 bytes SFML/lib/libsfml-audio-s-d.a | Bin 0 -> 2855948 bytes SFML/lib/libsfml-audio-s.a | Bin 0 -> 206536 bytes SFML/lib/libsfml-audio.a | Bin 0 -> 137786 bytes SFML/lib/libsfml-graphics-d.a | Bin 0 -> 367858 bytes SFML/lib/libsfml-graphics-s-d.a | Bin 0 -> 5185728 bytes SFML/lib/libsfml-graphics-s.a | Bin 0 -> 627320 bytes SFML/lib/libsfml-graphics.a | Bin 0 -> 366852 bytes SFML/lib/libsfml-main-d.a | Bin 0 -> 23424 bytes SFML/lib/libsfml-main.a | Bin 0 -> 1298 bytes SFML/lib/libsfml-network-d.a | Bin 0 -> 137866 bytes SFML/lib/libsfml-network-s-d.a | Bin 0 -> 1893076 bytes SFML/lib/libsfml-network-s.a | Bin 0 -> 195620 bytes SFML/lib/libsfml-network.a | Bin 0 -> 137478 bytes SFML/lib/libsfml-system-d.a | Bin 0 -> 97144 bytes SFML/lib/libsfml-system-s-d.a | Bin 0 -> 1065750 bytes SFML/lib/libsfml-system-s.a | Bin 0 -> 72900 bytes SFML/lib/libsfml-system.a | Bin 0 -> 96852 bytes SFML/lib/libsfml-window-d.a | Bin 0 -> 76324 bytes SFML/lib/libsfml-window-s-d.a | Bin 0 -> 3088928 bytes SFML/lib/libsfml-window-s.a | Bin 0 -> 237874 bytes SFML/lib/libsfml-window.a | Bin 0 -> 76102 bytes SFML/lib/libvorbis.a | Bin 0 -> 251676 bytes SFML/lib/libvorbisenc.a | Bin 0 -> 712692 bytes SFML/lib/libvorbisfile.a | Bin 0 -> 37388 bytes SFML/license.md | 20 + SFML/readme.md | 39 + cmake_modules/FindSFML.cmake | 373 +++ headers/Actor.h | 8 + headers/Plansza.h | 12 + main.cpp | 53 + sources/Actor.cpp | 1 + sources/Plansza.cpp | 1 + 705 files changed, 121089 insertions(+) create mode 100644 CMakeLists.txt 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/libFLAC.a create mode 100644 SFML/lib/libfreetype.a create mode 100644 SFML/lib/libogg.a create mode 100644 SFML/lib/libopenal32.a create mode 100644 SFML/lib/libsfml-audio-d.a create mode 100644 SFML/lib/libsfml-audio-s-d.a create mode 100644 SFML/lib/libsfml-audio-s.a create mode 100644 SFML/lib/libsfml-audio.a create mode 100644 SFML/lib/libsfml-graphics-d.a create mode 100644 SFML/lib/libsfml-graphics-s-d.a create mode 100644 SFML/lib/libsfml-graphics-s.a create mode 100644 SFML/lib/libsfml-graphics.a create mode 100644 SFML/lib/libsfml-main-d.a create mode 100644 SFML/lib/libsfml-main.a create mode 100644 SFML/lib/libsfml-network-d.a create mode 100644 SFML/lib/libsfml-network-s-d.a create mode 100644 SFML/lib/libsfml-network-s.a create mode 100644 SFML/lib/libsfml-network.a create mode 100644 SFML/lib/libsfml-system-d.a create mode 100644 SFML/lib/libsfml-system-s-d.a create mode 100644 SFML/lib/libsfml-system-s.a create mode 100644 SFML/lib/libsfml-system.a create mode 100644 SFML/lib/libsfml-window-d.a create mode 100644 SFML/lib/libsfml-window-s-d.a create mode 100644 SFML/lib/libsfml-window-s.a create mode 100644 SFML/lib/libsfml-window.a create mode 100644 SFML/lib/libvorbis.a create mode 100644 SFML/lib/libvorbisenc.a create mode 100644 SFML/lib/libvorbisfile.a create mode 100644 SFML/license.md create mode 100644 SFML/readme.md create mode 100644 cmake_modules/FindSFML.cmake create mode 100644 headers/Actor.h create mode 100644 headers/Plansza.h create mode 100644 main.cpp create mode 100644 sources/Actor.cpp create mode 100644 sources/Plansza.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c065985 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.25) +project(LotoStatek) + +set(CMAKE_CXX_STANDARD 17) + +add_executable(LotoStatek main.cpp) + +if(WIN32) + set(SFML_ROOT "${CMAKE_SOURCE_DIR}/SFML") +# set(SFML_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/SFML/include") + file(GLOB BINARY_DEP_DLLS "${SFML_INCLUDE_DIR}/../bin/*.dll") + file(COPY ${BINARY_DEP_DLLS} DESTINATION ${CMAKE_BINARY_DIR}) + include_directories("${CMAKE_SOURCE_DIR}/SFML/bin" "${CMAKE_SOURCE_DIR}/SFML/include" "${CMAKE_SOURCE_DIR}/SFML/lib/cmake/SFML") # dodane + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules") # dodane + find_package(SFML 2.5.1 COMPONENTS graphics window system REQUIRED) + if(SFML_FOUND) + include_directories(${SFML_INCLUDE_DIR}) + target_link_libraries(LotoStatek ${SFML_LIBRARIES}) + endif() +elseif(APPLE) + find_package(SFML 2.5.1 COMPONENTS graphics window system REQUIRED) + target_link_libraries(LotoStatek sfml-graphics) +elseif(LINUX) + find_package(SFML 2.5.1 COMPONENTS graphics window system REQUIRED) + target_link_libraries(LotoStatek sfml-graphics) +endif() \ No newline at end of file diff --git a/SFML/bin/openal32.dll b/SFML/bin/openal32.dll new file mode 100644 index 0000000000000000000000000000000000000000..7760c05f2c74cce6a3d40e2fc08f78aa862142bd GIT binary patch literal 669696 zcmd?S33OCN7C+qCpb3H3fuK=9S|@4{)M!x21hgOBA+MnWQ9*(ti$MiNK(;%umREB9gO(JF#gdA@NW@}UhbR4Wh~HoSu_jq8y$7xDZF#Ln)7k5i zJWXd$m^J$@`}_s-Ze1|r4tx2GxpU`v?KjsvVDuFdOOW{KyUEg#}J_xOsIBY2h%*Y+I~&vE;{5YO@ZTJdbR zx3v6-XIt5rmc@9EEf~LVi+GORNAHa-cul-Nw!kgo*UT=TMQxfGmKIqoGau+?sdD%y zn`v#9bL>5nd#79enP##4ohSsl)PY(y5nKxNWjNVlNweSw|IDXlX}TmT(vmIHQB=NU zK03!`O6{H=mRTs8`*jb?BC2qDx}}vGvZq^8hf{*_Z+^PvwcZv>-m^U{1I)B8o~6iN z9iLvCX0b|C;!~sHi@Y~4@*-w`1~?PQgnNhbc0hH}f|)bCGc1-bh9MJmS}w=)1w7;a zIY6$9WHHOyL6iZSWZ==-gCfy?4%Bebd|6Q72wW|{NA|%^)8$tH- z@QnNCpmrDBJZByX5{)dNmB1ypQ@K%bul@frsOeL3tdlhVLA%CI@QXkLjkRdiwccJH zR-eCHV-5WIH&c+fNn=xT@-+Wu`?O8lw{H)9-I!v*Q)3%7whP5V--?9%T0KcuQ+3s< zs~Ng#qq4C!HV`LkY#*zyQ8U6lBmI6@lV(B0nNe8pJreE~>Gy?^V5J0B-=@^1RM%Ey zQr1=@%SKuCPAm0Sy_5I}RmQ{SZ;0T%B>(ZGithEQ7UtrNU699Noy!+Zk_*~ z);`Dn$LfY`+{IHix`Ws9IzDiAgJs)eg>K#1;u=!t4vuXp(w(jRGxVqbc%)*GlIzOJ zyG2>z%CT#~3E-2UC&$h=$!zaIw4rT^TRBK;2iE6pMjYf?Z;?>Fd` z-uvHsWt$`iiumGdVm(({nw+v}*vPrq8!}Sfdtn<&>?5P(*?&CpUkq ze`b!|66yCBG)1o|8f)b1x28xG!u{EVoH7u5HRP9v)$(kh!BB(V9dLnD9U7aHqiG<1 zDZtDV<0;0U7>5{8!Cp7vZGK5Ng3*L6DV*ouhOTRj^h>3tL21;5*jW^#z`tH1h$7x@ zXwPA`XO3EpZKgi1ceIc+)b!F;UE}`g2Q8kU){?*b&1HS>aJYh_QX>84qM9)AEP4&& zmuT%Pcx22jaQ9QEbIKA^miURPl|PSm+!({}NW z9h~AnkyKGgZ#g3Uu0`D*!ctrJ-%&sl1Hb6UNQ8~ERd21j$iq%^ zv8^iGwd=&_VCtpr^4g+;q4zIHbFppV42Y+q;QXW^8(k?4Mb%rEw73e7cx@W%<}Tmk zDj52p5;zHr*mc>3+ba8@1%56nUYEAoVhJUI{n_ZO!Um-}h%&(e78)OKkt$HVyDF{l zLuLGjg)Pd;qm-HYM0Y&Ii1N1{_msD4<(u5Wtj+x6b`mwmF-Vlab`L(aKvq%y^VPDXJJ}WutBCkS(6_TI94-<;dN~ zeaMXv7`=%a`p`dUY@F4j=jIt~-H_L@!ibfId^%R_ZcWF!ch_Wh3rikcuAbi5^pf zv(RHH4d}1^YGFw9msZ~7Dj2a$349GAvT@n2!mX9*vZF$jGCIpeJ+&0!gr3@pp4z93 z-&fdDwX0JvwaH%E!ml`P_LBESbcrXWji!+tqmx7rO?cJpq2_20Igmy@)OHN7>sNa8 zyREWw3J)y43K_woq#+;3p3%yGPUx95@v7*VA@6qV82)dgW4aOA`iNy38%-V4&{=%4 zN_36cD^oDAg&fuNczF-W(asLgpv(V=&j+jp(`;46E>>(~jUJ|`Y$x?YR=T@Zjj2Jq#Mb))SS_;S87H4YZyHMs26;_QE<8Q!DEjWGvXG8#S$?&L}1a5H< zTrt_M>6JM)58DNH01LR??98J4t(b0$Sc|&rM`v(EPp!PZAj`iXt%z+3_W~cdg5$y3 zn_MZP{k`b&#eLl6TMM#SMY@}fLi4E&LZ*R95kd99ACgAuI&m~GS&``Qp`gPde()&x zdptl>7R?+u$Znlm39`fK(-s_bV3!4NwjJFQi6WK;%7Q+!)`^E+{j__~RqUXok z1W_LYgvM-%aTqsYiXljZ?P}azhv|hnJpT{~?P9x6f#3ijxT&ZhD*?f~xsU8l-DI7*vmjr=&K}O1k(_+p#L<%$y4KWRUktB#jpHtDK>t9hUrNM3+lxXV5agLx&`Gx7yk^K#Xlq4QcptM600wd=FlCa92Z1(_(!h! zqK755@@x;=3f_d?)@#u7m{Wskc09CTzXCk?=89xXb)+Jj=EA-jbAr(tBWO|vNnALuvf|99+uEgq@R*q z634?*Yj|`S@X0?!WC1)QG&Xh-lt6D9KLZMef8-~h_pqc?4ur-AEdD4Pc}qNcHBei} zyl4wb##P@DIiGwGl~Fyp8hdpqg`?GN6B=?OKaC1T&`qCc)kiB@{39zx3(%Q=PC^sY zo+Uieyr|p5n%s)37Fdm;STL=e+J&}g2UcUL@q0z%;}`KeMCGfV6Ri{QQ$#}7dZD5F z1PA6rb6*cEmkPFHg3tw*VJPdrGFALuteZlopg}>wikJ ztS9A~((aLIE7MS}r;&EE@vee2=y;;s)iUjGSx6%_fZiQxygLwSWQkGQV43z#4${aW zKxzGC+L`Agjf{FqOOk0D(~*{hzM!;281z8wWlFQiG#V5)gx*Jnq=kQm6-D=ftoB1a zfIjbmshVt`?vb5PDIgKIYAgvnsyo3PwH3xRc|TgM2P#Xi5-hsKnVMANUn)QuyQtnD zK#2Zn^?u?p`iCHK2>q+~KO&w>uiE1OD?&-!_A{}NbCLh)wUpz3`Zf7jM-NT+Q}5>2 zZt=fO@p^wPJm~_2Ag9(=pEdo}Q8|o7K(8G?D0H-vSjWPB$eqcS zb;+xta}UY)1ZWSFm^vKj--rOSp)2*PT|yR-CG2Ix`g8_$(!J>;S}b5Fd*8FvLe7?n2yy z_yokKe2avc-y&rWE1sh}y)@AISHw2@?Tf-CWH4!}VsoI<}cCZVl9+_kCh*$6kMD+#2d?{We`jX^H&65NcO&WtVRwLTi4Jopd zK$3F`;K6tz(e4wPwK+fkg3gks44%)~2_^Si7dygVpOgebv|vms0g^XbaP10#dNa=_ zas_cJvxwfLSPfM!o1qv}FnRTAzZqiFuyAgg`)>f2THCGe0Swn1|d1 zXX4C7D!G#D#l#1#K%GiB%emb2d9il?iDd6szUw*@NpFc3)TZ$F!xAI5mv4olgO&v@ zB;?WrCj2ZDkTVPb1_OYw@*PH@P0VNfuf|*oRVV7(>Pk?1Xcx*0B~9lS5# z5uFtF!Ox_z58UXRzYCt-!P@xuvX&KWPiQJee|o_2(K6+0dgRgh+9q@ODevj<@ zk2Lm8^-*QzC!mhXCOiQWjdyS-!AoQCA4q0PNk>3T_(L>ExWbPs-=mkFN4ke?sKq0w zSyeV@$R}F)d+;@UU_}ytlt&^(`L!O_re{}wR5eNqmRjAAjwMXV-G$X(@U8nf=I-Z`D%yxOiUCRfM`+9)!|@H#CouSHy+hbCf`C8r zI@R6G7m>9QolBbe>ZfQfY33GGW8nV==rn~NrUbCk<3*B%N~125=~3RN&*{Q^Hn5L!Zy3v2jC=(EUTW) z-$9Rf%DcOR^UkUrm8(6 zp^=}1c8Gju3JOgC0_a&Cf=XrYhZbTyM*3a#a7WHM^rd|1OT6sH%O8t)GuNGxBNF*w z>Wx@U>g+QUwtETW@wbr2ua-vT$QU62iun0tpS3C^|)*+LvL{j3B1JmP+nr^-5`)PpVCrMSw3l}mYFj7DOaWkmGLsA#ZUqeCG%jp@ z=@p3*r9=B{AOG7p0$2#E3q^xZeNIFe=V0&ghe;)9x~5)~P5`a<2P@~@17DPHbtKN^lG-d3ud_=w~qf zoJBu<>Bovjy#47#GQ^G7*L4?RtPUZCAWvu?^Ry>8@ao6NEwQ_VHRji<1wFjIBeiaS zU55Yozy)oW)?!s7%ds{|Wu8BQFVg90Rdp-P@p$*kzntRTi+<%@bFGH_jHT?FGCm32 z!p4?y=UNgxJ^7~p(WC z9DWm!Q++4Vn5{x#4MAt*QLF?X_t&O|PeVGqMz#t&rJpp?yDMuN*t?JF(}o`V5kY-? zZul~lHM17}7G@1)O$!L5PsJl$2j}wrTE4V{Y5rjf?U)5pI(VA8)TBkra@u;Z)eF^0jRFM zhelXMuIf83c%VmpvI;t3$h}FOgk)lYpn8?!YS7ceUz_EuIo(GjDG$|dGD=i59oy+| zrGaY5@dR8j!|&2an3Im~b!zMp>JiKgb9mFoB-6*1Vxr$Dbden$&A`)tXB6!tdTj?k z2ji)0oJ8AVC6%@FX`)5yWbY*!TShIiy(FmkWYJKk+3MwUh(Q|pMi>dQeo3h~-kJ|b z<07$cJ29%xGHiG_IKK#@r>K=AkBfa)U&KlBz_`zk@V&y+l1lD!Nbe~2&N)J46t(e& z{gMb|-MWH%JA_NK+mntjIMZgm*;uy(VaAGST4wn$gHDNc0 zGLWmXqT$H;!o@03s#!1kg7-X0g_Hm-MCqgR(a9QN+1(y814kLvf_OiNukKf z6yzg^CdaBX5umwF36QRgNOy`QvRpB(zhrk@O&dq-}_#|E(Q4SlryFsDH*&8zGaps0@^ys^x2R$-2WJ1pmr){v|p|KLj7EBIFE{Me8nhtjy$@g3r ztO+KshFYcC)|_|K>i=woatfrmh1ASu_(fv8e_4K;jYEAb-QBr387 zHRy$z?FK#jQTfLIV{%?9$$5?>XC{#>cSCP_oV}qZJTm0$*X`R;+D%i4HTi`0}q zzAOnMWJ=C_H@hLv&F&iRX7_1s_PIH!(v;feoND^grmNWBKzmf+!))i@3Uf=kU=Dy1 zQ6UEre_*dE-S+ZNgtoIYPP#pf(lFVVJ&Y&W#(^LLF1A8w2iQ2lzeX1XYP}0w#?-H3 zSZtDMQ&lz!Vs1iCDGCbR>pToy6!wtHz_wt7V9(uEnxR}^P%gtJDo9xxn^>t9OE4}( zaE40-E^^SEUec=v%R@iBhl;muRlG2zjNX7ii9!XNn z7b~E%NGr+o2H)s^Tj)}j%5fm*BDW_9u?NRI=%n#paPwfQFr3Ag!h-_EwTW*-g>1B- zrHgc75Yxr?LHMAog9@~xK$H-H{sb0jWmNMhQ^h_9z8zoHlini&fcO1<(d7 zve>ws0#sko)5YcvbrnE$_4cCbA45H%Sr~M_b{c;b+2n_K7v3sNCc&bp)CiyDYbOy? z(Vz1FVdlpP#+LAD{1T)iA3CWYAsVbuO4+zv?1xfTT}&f;NOQpoK_g|=Ac_;KU~)Q6 zGQ2ku42BVjZIswf;%rc;|h*6Ml^qVZ&D2l9||r>z2aZWW8{m2?%6SF}(kZ_BnpF>M2p=LqAO4u?qKyA+u{>^+AwbhS8 zQxS@?W+ca`dS9*Zo-gA0w!TaLQ;LmSjC{hF%d8cWw+D-YC3@GsKLft1TmhF`&i9AJu2f; z-1$4yZAif``I)TND;5-7_L8b(jB;|(I*!~>!PW&DY6J~6_rEQF2fjc{R z|M#DgfuFRn7dia1Fw{aD(C_@;BTR&pz{^O8a`=7V@E!cwT_#?8_~RcEJfzo~0&f;A zEKl|Q+>h`wB-;cnI7>*jHoVH5WQ}7LrHNkxY=j3rd@1Y3#-$e4Egn!^yC}PGtZhkO z-3dFXiH%Oxox^x{lq3dg;y*n<^aAGvta{bQ+VOwN-TIB%SYDHs&iGA^|mNH!6@8QV>`*-%_HY#q+TmLS^1G@ zxVu2Gk-vIjX9Q{4FY4@{vPmvUOha!H;##20~g;*}lwC7TKcesqYA2f3Ey2jQw$YfWV(fn4)Bg0dKs?8#lO4 zHMZO=1n(>9GUo}%Xae@$7(ckq*?|VcsNc&^BQ+|}*R6>=2ZEl1U<3VhX-?RMM56uwF8HN6;g{uDJMTU`MtD+MqoV3Ah^l7( z({@RC6${&KnB)yn6_dinfF@ju!3gn1YwqC#zMp&AW0LD5;fneXs`1}vvv|+EMVUL+ zh9B&NxnZkvL+y9U)CR2P_YSA{&m*34@phD@rjJn5z%L2-otn2!tTrqzMp8ocJp9Zl4=l-)r55BTmCSGTQi3Hc31tZt& zh_8KzlRyI{unOt4s=t_i=F(4r|8T1JVhWv0KmGlOlf9Y#NOT5$i8)4ur!vRz@MPw& zg(omaZg@O%WQ1us%f-Lm1`Z#W&F{i88`MZ>KOuymnPLG0e$lBmRX>Yg3XsDCnU=-3 zBQtDcS~eer5cbT5Q5I1CJbY1TVzYbO! zt@#UyUTnAm;Ru|=OVJ<%_vsp2C6wYl!aewV!T`cQ`BfZP5*ecKpHP@a*VE^9xyB^g zmA=P){BxK?MuP*%{2I=1tO$xUr*&Oavb=>)iK`~+XT;eX+T#dP!(}WFk@-*bP*y#b zL~MBvez9F$^>a9jK1CrJqCF@S^4=kS3svY>O7&_KUMF@T)~l%qTj(rGFzt-t-7NKL z#+@UVUst2r+h zKZT6kvVvhFkmAu*XohLdf^OLHsg{90SK>L{cn;lqcNGfHvN-+<%;s1u_d2(z!;(Um zNE9rV{aE=-yY33{GFJ99SLifk`A_sz0?8tfp#=U5)O;r_OCiyR1n;-Zm-=p&=nG(h z3MxQ@(8nl-aQll^OK2CuBLDvtWKTnv|8``<#ReqsB5O`@w3GT)R|n{-T~~7f^JSL_ z9zyRrL3zv4LJ%v*vh=N@aL+B^HI(R^k0y0>zMk3nd;*kTTHlb{Ua?zs)7xnlKKf57 z7R)3gu7(G>mgJGigoR?r2!}RoE|XtoQ@Jkl9&;(!&f5Z#2cgD=IVgs@Fxj`>P1R>pB`VsE4r@n+skZv%mQ2Xzg2m-|Jd>xHJC z;wBf2@GUck|1J>rVI>U-tnY`g$ z@U{sfZ6_t)2LEn|Io~URw?Vb2GWr&glzMY^T>?q>K$-9`;RiSN@J{jloCJbbOob2p zp*m?}ZgGxNw23Vt`hj3`w|UM-Pkg`c_qJTp6`=gw>*Abr$;t?SZY{ zUHHpjd*Iv_Ye(U;qgK$4G!UT=br?CjMTenO#75BdC+P63ANWgT=rqPnI-sLqIIJi5 zSqO(Uy|)P)%g}&s?o5pvYNOPE%DAIA*qphcKzcq{j~4zL2EH4n7&JyV+jI zkuVm6v3rkPS3CHqX!83a8Cwz>`MX$trRTo>vbRg4J2*QWdX4!Z68(^|v3WumA*ULf zZU2pSGnvEx+tNip4+k)2KS#%Ao*0{gpxCo)fa&Pc@%Za7UiXVIdJna(Y#mG=hw`N5%1rQXFHg;Ozu5KK5=GWIO^DCp-u{ zdBBbp-Nk-L2{F_Zmm%@&G|g_ zN2KLf1F{b0AI4xIL6~U%8Rh>#m;k7!vb(eZ>6{m7J^agaMWYz=nt$XKFG6Fiw5xBX zt`^$hqJIm`^%e2xbq*f9WJI!M_`rFu_po?vxJTjkG*Uxx<;NWet)th%y=uzllQcOW zE#ry;%uI>*8sH$b# z(XFCgZxJ?i%SoE=U@dAEr*=M61}|z+a=-gdnS9x>*FaX*?otLj8k9*9JhgR2%A~Cb zls>2AZo#wc5hUzJVEQur%*k;edI%wJPTqGe#dg_@xoH+eD`^i(?iT!g;!<)?@KFz? zAUU@cY5a0PuH?4Sah|tcO|#&&$*uJBOimkss{Tj`oR0D155p<&ZzLe#okl-n>E}HE zk8lP&fC8xdApZ8dlt~x*QIC>)5;%?s(xh;53*+aRMP_N{I(zzkje-cm7G&vnlyZD{naHdImmAo9QmsATGKl!ccUKLqF0o%F*|#<>%o-z7M#n0p_wK<0Qm z635n3aGDLl8&*?rQWk>OuBG6-Yy@v#iv0+5hTil+NUNSMSeXnH^vZM$8ePpsFkc4k z2=4DGQpw)GFhd04m`m#;3t(k1t-B055X|5h+`5Vl^J!1uwNNkO#}mn-cDnw{sQm*O zq}qGOYM&;9RQqeP0M-7y3{vg?mJLzuI}i-5AtuMgN!KCa{#fk`W3^YxAi;h_2C4Sz zWRPkfD}z*fsti)?7a|xY_s~$8Mie<)1_|cVWRPm@DT7q2MFy$XAIK%7t5oX&8Khc2 zmBCWsJG&PilMHe%!86i%j*YXKi94#UB;Q00dJR&>H~~t#KEJ%5bUU@zZ^jW^-D zJKM`^@dD>Gi<7Y%8B8Y(p`b#8yIHB}&jd@*n{cWCS|d%0H8ikYFfJ z!dAhs5;c-BjYmpz>CJ!An*jY9Th}1}pW4ZDh4FSOIQhTh;M~h6c7k&acKd{tsDUit z6ngkcdJ}NIpmc`wH`~bVe8&KKU4XYJswE0Cl2PPN1n>3r9m!}T@Gdrt^DSomRj6VFiqRNA%A{j$2-0p^Z&typHCEQ}{Pls^QI z#_U?@r;v8-QS3ICb}dG=JmV<#%hP80`ZWZW=(oi*4jcG?FxEZ68D+S@i9b@1a~=7^R1mvPC48@m#o2)o$$GJZO0pn7+R@jZApNi&>5 zL#uLKe=Ir{2O7ePjE+E5?AfQ${^R!qTO(I6UxfD5{oQ#yUmgQ|T2wH-Wsc{e@qq8)13Lk}@Y~Mg*+Jv^CVCUk z1?j?eee0J8v(f)?w(H-Z)<_|7;8VX~V5ZZ?dZ95}$w*U@0RT-IE z4kh;p*;#q8wp`eRujFDUg)Qw4TzLycd2-q;1bE~9WNICUevQn@BR!M}bA$ByVM*Vtq$tYr^&!xi-BVpE3U+2IICGoN}TQ(!D<3BJRLYn~eCaDeVT4VM8q+`0pUvZ2kRyyA3dg$)(oNPSyq*{7C2CD;my*_0iC+wbkZ zBr@gX%+O-o%^&}Hj)w6e@AW0PuVx}`FDvyOPPM^j6Mxl&3P7w(%g{?u4~0MuY;&Yg z7F|k%fHj&2`Wbm3VehybKmK!w1Vb}_h1$eyT9@_<6TzwGsd&7;=o7>1FNt`4{H(<5 z7Q$-=;Wfp;>*Ba8G~lUoTEA0`x=uaFS1er}{Xth!P-^ z5wbT~Zl*;jRS95^9L{VVKXEt-1s+6%j}*3&WWPTVCNYFA|0i`*JVFnKfzTM=NrezH zg!$JJk!+K%2I%8cB|>(662>~AmZML~kfB_Cl1+w&>XWhvUk9~<&M3txvv3x##ta$m z2q=7kCYV2Enr!b-j7g{(Ix4F<w&}0HduLKa` z>$;#Qv9Cc>3Yt_!xYVR8g-yy**rY9mP3nF|ErPn=CV{#(PjEbXWUnV!oXUrvlCt2h zL_aP`?o#3SY&RUAm_Om|%sqh_w2q&EtwJYNCCapL7AM0h0Dv*LZ=}I(oKJiKrD%rb zyOyU|Zh>216)_*ps=zB^AUs!zCS zHXdN2EAu% z>MSL2OmKQs{N`nhabIUf8hk42`+1YRWEJ$=h*ht(^M=)$y|CLLqD&!@jY# zxW{~KUiec(j>W!ZK-UD8f2%Q_TBSRM&e7OCxVAfq^y415(6~)i>KqPU_k_ToX1-4} z|I<|3qWRxiOHVKOb`K7v45Ldt{gmWksiFe9%bY3@w{RJGxBw9p_SeC_I*?S+tTEwp z<cY;i&{0L|Sq(<&#Iu z*G|{vR}J;Gr%?XN=R{gJO6%`y?@nofheR65MI}HrN3Uz~wF~X&bYEQ?%piaJ=?lMD zH^UOKC{H&mxGCJS4%?7$cS{xy0N|pTbG+kyp-WJSx7Z&__Kxy}njvMpY5w-i@U!xQ z8DD!3I~@5>`r3QqSv3g2)uPDhc<#hg3HsV2KjS!6no_d}#@#x+Z=pHI*M2?$w~EAy zuiZ}JARYf(M=+ylrxMsEvLxQ`h_JxhZsJXow69&@t(bVzX@@vmiGY=dB|)ne8@TuL zwcC*Hy(8!g6Ag|h-F;JdTNjv9*LeH*aS(bGp+C~s{wcr@KbnB~A5Mk2uTEgz4$N!U?Fusb;u4Spi@@i4yAf80^e%NP_cNU zC$qUZY@8j=YdX7XW21+vL+ZtaD#0>bwBq|2>}RXE5b4m_jr8t(3tV`t0h@hTH)T!Z zu_Lr6e%w$xI1lTsKYy08n{bq16aqL(APOG)4y9CoPL3r!2^XP?=EIo~SfeqeeO3Fd zGFdJs(V1y}hcCr~LcK1;4PW0XH{v`m^3%Fg44~Ih*0+C7qpP)$+wd)tupcSM|7@$9PU4Wy@I$`)QMxMc3v8;2(AQV? zy0H?@9-u4i)T6aY75E6k!)x)HyZiy_5>GH=BkgEO)^IMuUAV)m(hYg;!d(?%hz|&$ zbPt=6$L`5tvvXxFuEN@iCzVM@k*Nf*hY$-_HLa*A|LCP#aYbMFB8{bo-wkZ7NOKqB z=Id9IG-e}R0q3}mYKrSySIQ_Ga#K?7MYEDocB{jSZ}#@2kL9Sxa1JHhLoGbMAeB(? zg(WXMf);4u{VuWaPP0Ec-{^S-JsfH1)bST5c08Rk-Ucro^*zH`;>Kflqu1+z3A*Ki zw(v}_5`UfwQ181C!1*YgIu3t~e*Qt3REwTI%Ic{wb@*lHJw)AG))pRu{OhdPpFrhe zh0wE;FH1rpB<)7QBi|}hvB#&0KlKR7Zm7A?;iSS9Rd+EY^31COuty}32NJ)Dpt1Ek zK?P6n6=DK>6#)Yg>oOjEfoSJnuoe4I{zugPEydLRHL>nzHN(+oAi?+yZFVhvkVZRp zL`$i`*;$JleCTF>k?bKjI)Od3!e-nu6J?Lx)T{8>+?L0#&(X@qA-A5R)^3cf zody*%1Qp$&;?|0ma3)dv&qPtkXGCQBVT0|zgL-|B72J8*sz0Pzz`$b=nS9w8M8LLN z!Lmn)?BD!ZvTSKQ%R-8K$yTd`t!DDAxZhOV%S{eq+{(S^f#|K==(87yW!L@AMnYp> z5jN_InS$g(GO{Pil2qR0ig}#6SNJ)

)x1Jk-?iC#vs+(3=AL2~pn( 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


uH34`?c*R01nG>gYNl9-bUeLX3(}SK4vN} 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

m_pItNbDIMk!9a>V1e5^lw$B3D9`| zv3(*X;G7f&<3^F{9K1A9kxLwwEWPoYJN)Lq0-kpkjL^=22gT$jRr>9dL^mHbpACBI z#pYH+yXzU2W@8?RXcDjgD=xYB5nTq&_`3TTsA_`o!m^NUvG@P;Ny zYs_78{(6cq;-ywITN;=7yS^IwwkgjE+WfX~f4k7b%G2)s2k*ofuSQD6+pO%8jo3db zWXC6#X65RNd5l~WcclW_A3q7;Nq5Y9V*b?OuUctzePkr&z%?H(S}?Lv++42mz)mpwlEti@%zFU5&`Hy!?c(B`y&F|BtxE1)wpZ~8^=>_;U;HZdfs%ICU ztNQcBfamSt>5b<4K-C6p7ZIim8luCcwIJjFveSi@8kqg1xr~t1n$6C0qvsu!y|HTJ zr)K}VlRZ7Ii$}VR@N@;w2$&nl{+(mzf7NfMW_`!-d^mr&k^h?Ed41lg3Z}18sB`+| z!1M-57MxBJzh}pS6IGIlMN}6 zu^&4Yd>|+MmfGHZn7m4^`Bc$0Z#bwYRXMOO`@d;>7x1X6bK!rI$s|Ka+yNO40unH4 zG$PTUCJg8dOk@vCYOJDIwPK^Gty&Rg1S&}AB$8w^r<`i5z3bPTwmqlUBNwga0wi4I zYBfr$L2F&ZXpNVK1cdp1@7gm-06nMA`G0?&hs@qdhl3SHTxjFurt$Ac41S#d$22B?X^rW}4?V+tVB*uq^?uqJ2mTL)KgI zE`BLkQZTpq7LZ}67Oxu7J-Svh{(tnZje91pS%QlaPFmw8hNyz8+GR_ZuhsZ3{QkLD||uXoKWXM}aN0p$r8!{I!3B zk9OmunAvnZ?m-y`f?NNXV&{y^$XqU-Y7Nh}DodBUwFi`SKdk*Fjmd|msI zrI%IV*YQm659jtq=Zz`gfS4GioxU=k$_Tr9kxw0C*Vkg=VdwZEc^Sh+E`x9?F1=F3 zeiQ|vOWK*J+Zjnarwf~d_BokP7FayZtR*39Bs=wYqP!%rwS4Fe}MKTLW_(0e?5ziCYrT)0dAl*!3G zGjXGI;=0?@PHp-0Yew{VMnrc`Vt@IGKzm^_P+XiSmLOa7ey^g^neyI9p0nQ(GLGQ7 zfmd*SE|TH`nlq!F?nI;Ax1Z8C*s~(qH3GCGfLkb&C~9b(K!-dswvHk+s2D*vvGB_tJu$Nc_w%@f~#o` zUDukIrT#%>o45RN(izF;cUtA_EbTAp(mk@!ja zLI-cX%I?1WOx4DDF|{VYcY$7${meT1*Ch1-+##qlQLWT<48ewP>C1dB6T8*Zbjs>R zg;!V??eM{BOrGwz7#SZQuLCvCOSma3!t&A~D*f?|?>)2*9Zp^Il|l(w$3^NFJd3a4 zkGPFX3EWQkzNBa3X&DZymya7sPX}pn0qs*zoy09(rS+x8oPT0Tb`yDNWNqtCcJsW` zp;7idF3Y#sh8}7Ll@i555Tt!Ex4Kk!s5RnZ+7oY-Z&PD+J4c1sLJ~@Z)V+?;gkXTE zj>?8&@oRaNUt5<7b2LVAwn>BU<`My4;xgP&8IAQy(sL7uT)dr&^VKc7)?~h$_^Umr ze~i?F+7C7*wx`HXnM|IxQ_#2|GiQW`W-dB#)&mpO2fWeg&~uTkTa~#`Z=A2cJ+1rz zxa}g8MB;+FXj^JZZedDf=rVqpob!^N^}saRpJ_bOA(SsQ=0jPsx;B^DIZD945_B2u zc6JgpE#=$%ns%rkv3*cak{F)yZ-~D`{v%?K(JeZ*sMh!=+bD?;{1Q%Z&yaYh+POU? z+Yw>MiSnKOIMTZj_+5|GgB%;x{Ma&@FviSM;vFg}vr8`EM@wl)46LhQU(%LnvAcRg z|5Bo-al0$^{>dHcH6S0n`p(B30=e0kVMHpSdLlmuyXpFsxKm? zLHW|?!D9R}+T%-E_FCxkubl_Jz)iEw_;>s^L68S5URgGub(nfFFq6c#T9(HdH*Jl+)CgP1!)#4VfHSwpG zty|XV<(V267jzIRAQ4yBIVDxY&VaF=v>N=)s48uXjANeb#G8FI^2JPf#{aBQJPIoz zf?4dI9mbEbs*to*`O(E$u)2E#F`wI;8!p9N(@AQqDT_ah`QMB7k6N0&L6%&{>NYWs z(LUwTfz$lP)vX4T8o=2)NAq}HX$ld zWNwHqv7pG>tz@Q~oi-1UA_%~{MEz=5JJ$`i!$K^PoI)ka8uol@`nd=wN;={Y4M_r& z+6y(mHnbrQ0M9g&=25@p^J$0srgI?h9f^CDbrZW}Z}iJ!-VqOsAVybWu{>RFX6T#a zBtGM2DmP|rx7l_yn;djEEo5Yrj-}M$IdscS$2$o$UW$S)t|1ROSN5i>mM+6O5netu|VsbDPaN%s|jjC z(Ecd-xe(5hk|Dd=nYBIPWRJp}v(gcHlxT68NX{Pcfbv1BO-B>x&rU@YXz!aflUM}z z0Cdx;F3|dnWNZD53wBUo5w8V&CVHu%Rp-O6riG`uQM7WT?A$Mm&j8;xD* zg7O2E3kr<28|1#$EM!B3RxG`hcnkz!fX^eQf%4_rY1x8iW8;xtJ>#w+FRHf0l znoHprLYN=2J*&)!U=r)Db=g<+_X5@q8A&ZhiKT58N4`BMPW{H?ZPmmidAu#)-G)l5 zai8&cN5H!yav5++z`xK@(vV>m?uN#h-rcLlOABN;EYzxY^yjfUBwkU@bpw@yx!qjBt*$ z`w5a*b4>K0zka|ki2`+{wz!)LsD8Qa^c6WWWv;3VtYBg4Z1rn7?1?4rw>xm}97age zHpzl>wfo`?!of(G4)LliIsxH+hv`KM;abkN5pKF#d%Y$df@PQJ!Rzy6g*lUjvFf4I z)QZ8EwE3yjyOUSIKo+{#5wIWFcrGX8BJ|>VnO6BDy38@A85--UeLR(!8werCZfY9}oxe+I944fGIc(u1Z@?PTHbm#4Pj})lOFcY(3 zAMX_+A?Pg!d=R}oalYsMS- znc*`Y-GY^Mpz^K)NygWy^SGF`;B)B$x9KeG3tR#PXpk^;<@+!RXXY}M>wcz{ghnVB zXvef_+$>V^-T~4{QN$OEybBE4;w~0JVj+AW z1cRp4e=f4I9ypC`P29OjuM6*Mt2hqx8U0GOEG&&6_Pt(5S=MU_ZOdIl$2lIjo?hUR zY3=U|lvQMrjGUMYpzwFi!^a5A5wtejm!*Us(x>AECm7giQK}BLX5%{$XMqh1OtPV- z0Mwp;^mx)N1?;Z!t5V!!L$Qx1oJm!$DZgae)Q)})MA@f>Y60&;c zdIOh~VaqNQO$6a{ttjl(uv&Af5!{0T_DtDBrFh|5ZmE(kn$l`2!b&} zP123OENqa~tx6F{X(s5z<8JC3gFXU-{+z5&>@5gk6SDBGBZK?C@L94vJVFwtDmPYw zDMEd)P&h$Z_$(?B?89m;6w*5go(>3ZcqcX%%y#f_Ux@5e&->H6emJ|zy1gio?SD?@ zU4qdegEy`B*?^6PUdFHyGM}`r76IQCX6@AlbYiN}^oSlE?ste&x{-yO#;m_WZq@AU zWb%S9LI@IO#@Qj~(fH4(=(ql2dJ~J6+O3QdX7V=)k=;eE*R7k@7702#k}e+ph#SFb zFY+cT8ne39D^&-Xsq!f0YZx`nS(bRjmWCkTffSVQLw3}N0Z?k6fup%=ke|}BaKu@-fE+PP2jmP9 z?aU!ip4s-k6Uq=Y<{SsXkWpCWA{~RN5&hREL~DE5jCOG5CxF@ek%Kb2GQsK!`$&}L zWVCSll=bntFJH!jG}1S`+7pe!FI!gCbb)Cm)zTf^{`Xi z8M@+v6!uxlJjH*9L+#n)MP^4MTKXnzpUE3IFAFOi`}bDfmVV?{R)q67?!uC`M=)Ax zm4hybxy&uSBT{7270Cm=+_5>I#IvOZ3De#%Ag^0@1JEUIYf%=OFQajflttUhXnh@* z3AY#@Qb5z&BOk4nP5G@`UBNr8;rXj8{#||pt1G@G zzvZhdSjDa3$*U{=n91*`)fNB6Z{!-xKxxmBxS9)EawKMQ(I^+wxM-1!QZ5?gVlo%2 z*On>aTlNO-7@&3=P`Mf9e#~D^U=M4B8r*TfQyn`CdOg0PZt4 zR(}D7c%?g1&M9FAo6hRW8VF0Ic*97zy1Gh#VPtG{qYUb_2MQ{G$7^IM77jz^RsvNz z)a%pG2Gq~Ic%F;XQseI_@@q#T@-nV*%6#dmM+9gHzQe-^iYT;9jBqR-VHn|?+I+3jmyyVu|Be{!_pm!J{;{%yx z5vTmcSZOOrAjc+R+M7tqUKxLZ8>ef(n36k9E9=~ayk)I>j=yb(+mzsp(`;VpL&D_Kx?9<7npa{` zDXdcscpI`-`fQIbENZbd*{%BYnNe>@qg4D*G8ua?uepMp6+fn1pNnPni%MA9#fBo? zta8zmU-Xh=tSX;)!A?kA<8m~+4)Qkv`!c_R&q5J)s0SZly`hr|k45NEq3+0)A?%Q+ zY5~{Qah$m{)%-K?C>#)k-5nEJ|!$j8n3-=sxhMQE+r^DsAR(y%5x(u6)%Efiix z+oebf=s~@qYyZ`}kCS<8q|~gO@FI6w?{~KPD#N4nBefhcFC_MtJQCZPDkMs$>K|Q? zoY2n7p>|}W)9tvjbUR=D)OIw_q3IVhS2=SgmBNB$ruyOvX8ecs@~)l)7b@ZeRIE$= zfR?4>y5uyo*)@^3_;K(f`Zp~##fO>S6AmCJee2b#)VF4<>8n5GGnWX04gbtV{gV&wqjZa0#Ihw*`-w% zJtp~CwU@H`nI4NK)AxkP7F=<8_;xe;BCl=nS4_KDUfbfYzj9{yGQHqT>qWI#ztS(1 z{oHB`!-YQ!%zjEQ%eOHaGuV7p5T&>JFbB5O`On0!WDr5d%9viK3}R?~#PvR|h4^y_ zq7gX)>BCSOn>s|tD#j6dqg6Xu-)sf{SA!PQEq- zfuCqFYX~d?0(Jh%%fol1K)}tkuSNQRL7hLUfgoIk0O4N!mIlIkLqK@s+!PRkX&}6p z4N;Fx`&!}`0)^SU&B(hcOhaKO*Z(>cwzBMi0lOz=_-Un0TIN5HfPd~%UzZkRt6*)} z#UT6g;kwjUPSG21jujc759)T|Y)#aRMvGp8IdOPVSXkNg{ZM4NDnmM?6|LplLikN^ zS>#B1F8K%bY8CjfZ4gPS_2g=(-h65syj;EwKD|WK%B1K0_w=T7iIB@3>duEXlztD- zX0i{O(JSHImatLSr-0O<8H))#_Nm@Ny*R$)gZ3_|F>wsJ>~pj9m?Dc954mygKu0WN zk?(W3mhKCAzl+b?1L)T3dYRz08e)0?^QbOwNr#0sNp<>CyVFzbPH$+`ojxYCDAno6 zH|-7sT-gahY`ep+QYU^l9Tq(pf(O%^|GXbk;ZoudW-*znzNeDQP#Bf2&-}1`C1Jo0la7soI-$)FA0*U9m%*)?~#|Cd65g<`&O;EAxmocbTWbouZ&EJS$N$n z|AO1x&)$Qj1x`W?vHzH{hBE}m)_1g3PKYg(rxpG``6%^UFZxTnQe5~}0*2E$dDZ*I z;ye>WlFUSc>m_rg3)sNvW21`d-Q=>hrEv0Fks6aNnRb|*{WvyYNJz(NW>os(TKC{p zL1MABOVoYk<>vlfrYJKx+x~&+P1^4jfJxJ6H#I~o07K=u3^BML)?=32EZ@p`p_%~y zuAp~o7%}ZZfny1vli#us7G~IUvDJ2K)QOMR^YUDA6JsSpjG?R&NIb|)!U&;+%a|eG zkTA%O(KnBU@Gh~uX1gVvVs&g@;RYc_)v?)%3=lvddfe<{&xQb*N-bg6>0J&`AI!QfZR59sd-YLsJvw?myN zOP*ixp^)E^EGqeZV~zcL0I7{`PqY*}cfu>ZO`woLo+JPLsYt@RlD$S-25eqrA_)H% zieTyfV+uds9pOB6v!HDAgw0ZJtx(K4il<2+b3azIC?SwSuFNU2-ddA1~+h?le8`63==lplTye@SG_bj;-=mzH! z`O`qp(iwExHWV`g-3gC6kF7!Y4nc}cz{54{ZN9-LkY$P~)^kdOIQ&u~Up-3GwpkU! zPJO_}Lt#v}!STvj5Fu@3T+>)pNA0vF!Icn`^kE`oZ9^qAyCuu*Z_2;~ghLct-=Pe4 zR_NfXym^tlIT`RIHrw-j4qX%QKG(G+E=Okgf{ln99V+sY?tIQh_DRQ! z7uY9*O&*8CC!zC|NGdkc2ZwTeph^0_d?lNP)E-pZ@kBxe-Ue~VPb6F$h$blMrz!r42 zV%I0309@*lL&xRJhcaT3f5YQ4@T2&ZN=bErf5RTCt3wosu3?c7QBxjpIzoU6;Y)g4 zf0xbVzudAyMG1mAHGE^z^Ut^K@m+2+A@YHRk}b|BDoG*E!n{$qKyDyvG|EMha0Tu1 zs@3S0zBf18E!%f^x51dwkH)9y>0q6zdiJ|;($oAmVFj#y{)z1$M ziu70M?{N4LUMfw84*4{NmREnFUmY&ns?`b`HjK=47^ik?w=HAX1uRAO=}5TLx46a_ zYnhnui2N;0%Tsnga4FyqXO@&{!Xk74;8c%#;P~<6>Z1;@a|t4{`HIPxK0-=h*)c$| zn#6(EcxL?A`j!32i2kDSYA{e?d?)wit#!>+1x;0>~vg6Q%$!PY^@pvK<6t&3+(e4z6vXcd|Ck#%h%Npdn2ALs6j(ICl8<2@l(>K+V z+TL=Hd{qV|Ducneg%YB0k*J4mCfk>|=e{Mf1HlQ)_2K0r4-nmw`W1YP)s+}YK=Ek* z*rm>BTagwKe3so5Z0fsMCajaA58R&BEF6|l%d>}Z1)_-gkx(MUy4fm(5`P`GRqly` zU?NhDYAY^%ygFGIN&9Q<_UF)gfoU;&OvecIP$plcm3Fa<7}g470w<9D11l|ru7a%BlUn$!_p|Kx4cTHxsN+nMe1FzSZzGRMp<<2MTrKJ>SkNk&^dgPi z64O-&8fM;`F@Un4_ww6Az5WeZzz;*H=Bk$f+U=JCG!$XY*9!Od>^#wBNqcVYs-Y2b z*Szj2&4){QlR!TVl!01#0}z%|c}i-Q1-zhi**u&%VJ1YLptfS*8vQ z-Za)f0!7 zX3;wdxGqxbqXMRH>H=^6cgs0!p2>uEO|)0R$mnts)VS2T)l_T#vHjkGFetu5_0q}V z7;W=UR(=!j%GQ0Mx=^nieNvua!hj-O^sZdQIbSKigNtzo`q5*k;^EHJo(u2xKUaO4OYhR=z{VVC_+#=(l!5IR2*G z0EQ~}%Qul!pP}^`ucyahbxKEwmd0*)HKi&@%O~;6MM=+5Xt0(4n^ z*4Z)MS8lY*&8}>k$9POfmhz|>&|3kSz(#a9iFoS3An+Etn*Z_yd&crq5${Lyw{V|6 zoeh)QK6r`r`ZcpM6Tq#O)!gX%&ACW#-KtR7+E3xtT}vmQ`p$#)J4IhU@g2>iqI=^j z9X=ahV>7R!D+p&D6oyMT3ei!;V>KNY?OMEygI1pYw(GB4+ZAr4f<2Ko&nfqPQwHGe4hD|_vD}H!68BeJv8=36Kt?1@6d`&CcwpO(> z*Icy*tnFK?+St`Gsx8wrxk@&8#C27BEE8dTm0|?4{P$?7ftstg*~plRsvg-(tGZHA zj1guR8taM8ea_bUl|A-8+cgvuqgPnV=l9#JrHqjcmreIU#1w-YFF1mA=<+WTk059~ z#J0SH^v%2?R5h@v##p&Tosxiphe+ajebi4ucFoxG{y2XRiBKLG9G;&WW9z$?- zhX5l;h>B@^J~Wb4j|ZoPM(zb-Uz2bU4|U-=?K+o(yKGZ}lNG@9+*^r%&^GYDgX!kg zUmp%rf+Y;Xbj!fWFik)G446**6qriLiox-x;Hz=%e}r#mD{}@gY%q&s^Kkf{6ZYHi zB?D^;mcji!)g!z96?l_yk(%p16W&1cYotp26V@1dmV)~al2$Mee3%w0eKpwj7L&5Q zdgKnNw{1)O`g4DO9Z@0@w`|^$xM|9Fsdw-aJ8V_VObl~qfnwfyXIftUOpQQM^aQ0e;zke6r z_ype}Gdp_sW$2jeS6OYOxjm;H6PN1`w_y?Nhy-j`DcJjE*q0z4=K_bD00hWKVoL4M zUjb6+w#ukhGKr7!Tjb_fsciNeHm7|EYQA<_j08WA$|D%&o3Fq)?23qX%D5ib77f6$!W8y(V|;vD&{rWjt|PS~m@E z`AeSDIdPPfedgx)(-hcy%{S!{P6~QAk=33W6WIz{Fobxe}Zd`or^oKk50O2A^Y(6MgqC1v`Z5!q5>h!hhdG~FQX-`Z60raU+hk+nK zNQGY?JE;r*B3L4#0KpR3(M=0OS$=t{@eveLYoMrvF_HKYHT3!}`wS@k-g~2r>nwSX z881@IVrpEv-^+&gn~cYU{l1TWcM+onOf_5SH@`I-I(@&j`~B1@{kBot?l;$L#i#U} zg+zc)djAA{pbmYN1yZAZ8&kbsNbi?vx^H6x^ndlcO}h6hm{mjqup+SKAHqz?4%W%m zu!$l5%iAqhdH;XzxRX9(cQ|!_XwLb}&0+j0oA0pwW%&N^|9=0Kt@jIv&Oxqh(Vzfr zf&1#sG6y0vlM`bNky09p>nX8_WKytJ>t8lW9G_;hYZ!X^dT7Q}{8`YAz1tpjk4P~Q z;}xkdVn+>=EyBAiXoyx=0?d7l)<@`bjZAidrdwhT`(gC0iPk`08v)E4_ANK;qs-&9 z7k%q+;zrHM`Wgm^IBaZsbHtKdwNgJinwa71>&ytBA;q~%4BLJDcKz&lqKIdiSfuf6 zJu0UpjjYV&I%Nf z)~bV?11XIx1$w^d%2k<>QC8Ip(Vn+>9{EkQ%h_D@LcprJO$5BAGz8;|lol@dzJRq$ zfWOct1a~~hXnu3AwriWl;f|T+t4MM6H?d~n_tyKY`CpdmW%}zS{6!|G{>cd;F&@jC z6%PqHVsFzUQ87e7_S+o!-xqfIn_b6~M#&$GdjJARB(OjV`^B3@4r^`xEI5ra{s%Y} z^Pv=+G??^GsljAwI^fOn$&LQ-4d~ z#0Bu#Enq|bXM>3tX2utG*}yWsaDWRz_AQ(>CA^u2nMs2JGt-9IP5ru~GT|wh-Q4-v zFxvnC`A2TBkzFERcWZFFgH_EN zsS9}bM9%7KTNOd>g@GXU8CcN%h&Qw@6eR^Jr>B#vBz&zri)0z=+dKR^a!_5BxYd^K z5ZBs=)P_P{sw1KLD$fQ-y<9dINUSb@vzdvkup?-^fMIa{&qp3jMtcl8Fpx!09`zT@ z83EhNGiz;I8P|RZ?614#FK_29G;vWgFn+A0%poQ4CmHK6NkH_t;c15WPRz(Ek)L=I?1}MjSBTD z%YqrL5Tx(xC=5HJJ5XY@bihpz{oZd>b@g==P`WL%ufr|BS$!S&%tW`jt)u>P`sJ!X zeNyRgjGzH&vP?Iww$LuqwoqEmBz5e0JX~py0;Eu&(l~@JtPX#N~C~?iC*K7X1}p$6V(j z!eO3mtnWyS-?-`pN}}qax=Gh$ZggD5&4_C<>zcEfvy{|i&_X=D6WhPCZXs#FTB;J3H)K*?7E2{dVARxG=KER;(94wy;&eHG!z`Rw@55h z0QUOVBu1WC<;~T)2kw>>u<<;ehs*W)ZL-7?rR7Np3xS0txGCW}z*07d*fkjeGQoS^ z-mYaW&l&5%Ut|4_b6BB+0a1qQeDg);>lUr%_`2q?>V6JDX{B%QZOC)#6p~W<@@Y5A zIHMX5We_o?_*J6#{j*yo=FumNaKrhZ(yhoB#jjC!36@*;%CLKt7*l85N2twk zMxF6WYpPe|C+Uj3Gt{dI=|LtilK-@>rtCqreESsG?#L0??gOM6yn7glcny}))U|j! zquntYo?@ARp~Pj%H5$IJS8IEw3H5z19^)>0aH5_Ld*s#Q4usC>4(?3^z5AJs*LV?b zo$)Wg|0--qBjSH&H}HXYJnub1Rijbd4J6@NY)p;Fu;@_FMEv1oWb4i~mtxJYh=zmjjC|85$JRtH)(9 zE)lvQ z>k(T4c6h|wk}5#jo*gPZ%y9CqJYhV>`ZG@$FpgXpYy3kP36w#MZ+mz~14)za?7 z6izE8aM)r70Z~OOSODWVF`|z-`Ren7T}n7(3y%9L?kP4!Lk5veNuO=AwS{6naF?7e z7Rkv=q(3!wJTl8Qd93JjjfUxO9#1lhX&Kdtu#^K6jeKZYaXn|V(*1r7~V(DR2u+X%7O3S-+%}U7!#}X4<>;Rj8=~gRaiuYM6Kp{O>3PEy?t!T zG1yr#aFWCgFRDYFQLOHS*Ye>2%M&)qijei9Y&CuY$pdnMl>kXyw=4ypO9wxq;X|sA z1r8fNz7%{!)4fn@x(kBV-3Z>76rt@-%bDPXVxCFJsKj3&miK-BZ{PF;{s`((wqG`! zQAt-WYarPXJ(|CGKRE`zF|$9HpWWn>LzqC z1BnS#Sx=QDG3oS&@X5K4ddd8!Wr7Yw-p~po?f*a6=EFm6dhIq-{N1Pezv5jHip^Z? zIGWVHH+aGxnrE#&yl!kRl-l!Q2K~dv-p`(4?K8{wB0+1xOq4(nuNV#IYMf?kh62RT z;-=c$W;Dn~Wkpy8KRDc5h~qJ4EIAVD@au^s)z))|7hO97Wh2fM*et+)Bs~v93sdI& zsPHQ2aE0INXYFCs!SX%x);y|#lbAv~`>B}Nz{PehfYC;IDP*+Oxl4*Y}JOSTbOU!>3XhjgKiY@c?7ni5Og4&M~?TA|;P`29A>xF~G^%#td@t z$-wsOhH*$s;E490&)Z)~TYuQ+tW-=S5@Y7ClxBq^rrEF9&2Exr--E9fhjj47(9N!( zS#aQ$gj+D-YyVTbQ>0y&-R@Ys-Nn+b@areEEBH6mZuY0QJ0yETgG;YpLFTS~^)9E) zjY#RG``50ey zt>!|coiWcV$N20RKC8AImGS8BakArk*YiE1>*=VM@=5!`^QXaqG2Nh3Sc}&XQGMp# zI}EQ2`LK=G+0uoWCx;)~1hYzie;8iB#6eQ9^$B|S{}QhQwD+&zbs#m+h5sF156vfn zw^)A7=LN7>lzFb^YGWav0^FB!t?uNkmBJT$K0l^?osdXSQ7kY%T72qca%PcTpXZ+I zKM{z{tQvzM#xU9gwb|dbv4}63o>nUzd2nr-;E^P}$n6;@`dA~E7Er!I<@Hqu&dT~-rdhULfzDLjDKfdHK*Bz%* zg(Mf3mmrGA(HgEksk1S4t-iS(THf}@CQ z=j)XfMyLYm>d)^dlI5x;TcWQKZGgnFGNaM=Ga^3|t67mP zU{5%V%X(1k3WWIZ{{0YXIHG&*>KO0>}R>ijy7V%PRr(E(@V0xsQ&bEJTDkR{BWV8sncLS&B_ z8MLypJAH*xjPGr9t2>%>8jY9fTC5~3-`D=&GRrb{dwpm#bG3&amLGtDbS~2TYo3xo z%<8YS_J<6+N(Q}eNo!(<_EzCjXI74)6ILFP8n%UV)qSW!Kvb{2urO|AcU=4`s|qYl zZKL}A;kJ+1(sX0{ID^lxlliQL^6ZsUKJyHj=tj{X;mL?g#yDI10tFQr;SuUZpblex zn%evu;rT~!i{lS&Gu^afpFdI`gdV_cXh#{dc5n2^@rXy=$4k*7hgviEaw6QgZP@~^ z=PQttB`{Lk`Sh*wX~8+7^GIa0gQ*_4>A@6HO88LE*6@FUo%avf(*n(*h(COh5H3@( z+>?oM>iB=!A3S65gX(>jqDUyCb`;VfxME(!iYXG(tWCMf4@e+l*KRZkT9qn+$wv4Z zHf&(bkzDUUWI~^B89|5Ddn_`|vBA@*9&Su;N4Sl)UXp7;wY&dI&+&iYpZAQwk7u6% zFM=>J+^_Kgfiw&qf%a^G=XGr*4jdS+5vVzB-(CVBCh`Avw<8)XOxgtS z9$q}rx0^{0S$|>25Qi=yY&CBACFqO%M9o5i!pQA-`-dZ!t^`4t?OszeCM8Gby}@&g zkOb43`5xx}$g9oTDF@^#+R1pf95Z7Vy-%zoJB^wIj|NCHb^K}xI5$PM*FrMX8Ts?Z zP-=Cd)X48Oem8GSGn0MHI4YQWGDqgjCdZ6NgjPNw;CU;_{{T?w2?N>Jm z$0g4>qv9L>e7SRq(oTl#n70A8=Y!>7AKn2Dia)^f+Ntw}E9dUwLY3YUJjv3rf z3IR~cvU{Np+ll-F@0@)R8;}CS%t@n=27Qxu<<1!$kxYrF9yncn{L3NX^G@&}@fFj0 zRBvRmN_@(PIkYXch;9&|IwH%B_4aYeR;GB{9+)d}2u2IA^ATmRA~;*MlK)&iCXLH@ znhOWT5;QtEA}yG(H_Vhs!j9`BQKV#_YswZZpWo?}4=1X%Igxa0nLg-+Vs<~o%&07- zj{v6S`v5M}gt|598T)&^tB;K$5W<7^tFlSaWM;Dyan4=bB|YEyot)4~L0GLHo-&fY zjf~{Qr&B_9QttljMFe9PNoBEb(d?RSV=ScAv_@@A;-R6bxSD33Lx8e29U;ivD4%16 z>SyP)MY6Tdt;1wL*8l2FvU7RTwPIj zrh_d?{eq^5eh!l!XgWXsCGIxesVnYQ-EAUfgR2Wt+OoE|mGZt<&)Qf2W>0})o*i7CGgGG91@syhOntkb|Q0eRW+TL(BS}~qD}p@ zgspxH?s%t#8qYQ!7GAUpi6)`A^*@6>?4gTk*Wc0=Jf}@s->>TY&UR$Jl@B=Uob63H zNWtKr+TvMt{%Gqb%Xgs_Ze12Q`5h7qKft--nj}d*uYT%{2%saM*|tP)(7P*4rq3Cb zk(~PW=}n^&BaXK=Wh9)({Yk!!y063E!cyF=E?W<1okwk$R8^c8Gy=!{eQ%uATHKSh zh@dOhX;{%tTYXTYZRv~4a<|UOC>4oqVkB2nwCwiqt3XQRl&c36;8{^_ZrFYJy0?Dz z{mn(@;kem$gk~f__f>@R^T)DA>sT)4SK15ZjPL9Udix0n79F@_#l_}^k+1w@(ahXe zej+bA_wp|0GN-Y{Y7-TpY~QCZ}~H~HyMGZFJt@mmq5iG z#dq1Hv?fJ(hCF}Rl<#Ik79Y0#qmxUG#@m_Hzg3Of*pO?c$B2KjqedM+eB%Dnjy-Z z7=f4Rtm!1C;8!%6auLraF;hPC1XzS`O?d) zP}e+BPK6LWZCi7S-arqkyfs+c4dzv~U>kObP1v}mBicH`d>kFs(u>tgKOG``zwXk? zN%r`KpSBf?faFnI4#)7zlnV=%`sZ~28NeSkz`}^$qE}8a9&Kk&cfQhi0Ej>j#s^_d z33EEDenzH)U>CJr+?dYo>VjvEC#erriR8#qkKLF7a*u17mC=+b(M9xTI&3{QW{~hTb(2n=t$%QYp>2So!w+|Sz*TRCUwC{uZW=SMODokGJzbqhX`uZNa4jBy;g>t|dne&V&eL$RwfOy`TH^=IXvu~2QNru)*k z@An#z6)8X#rBorppwK7y&e~BQW@Z{sz1!Y&q~MZ(My{r_;&?Bi)#al#k*l%@^vVGxR<40V7b zc4Ah#E{})k3Mt}KT$H9SF;1C6TnHy{5^;G}OD|7c`Y8J3`75129{Y8e6g-=AtyJyMSezeIO@^r;&;$7@iKYJ29SiM=^y|trZU-&c}+^IAr znB4B)n&IfXb(I!+Frt0qF~ z-V{3+J?anV$7VlE4EG0IRhRZ9oc?E6y3c7g4tq^^*;FT!?S#p11h zGb7LhJB=gLD5y|;37;Y+XIAu`jOgynXu@waTtHDYk!8n*k0vt03*^t4(ZpFsLw@?% z4rVxdR8mfYbHa~S^9k@wct=VE0odr^-r0(G%NNT835B~XQVU@u;zy{#V5FkRJZgfL zLCX96(nd|Htp#@V<}b-o3>06lMI{_=tv|C0YanoK0cS^g3Ci+w?ovOveQ5bTraNJG zPrs`df)1MhXIV`2aF?=>bSD=5FGlfm{4*0*{4ZY2N4}RnEy1kZ4TP5X(hQ44GZvmD z`qcsw+kIz}fHAWP`<+aZgYWEf-Risq(K=zLD~z%iE9oWwxCdAW|z*f^TF> zXLJy#%8iZ!cDNrumlih6=PLCK#qhlGME;~U%X=O|k&&IVi{uV<^LQ;crjceRRiqJ~ z$xq@VZdWIrJ(BVYHS>jMj3#(h_+)T*^)?$*}#@ zk|oW&?0Gq5Tv}$l(1m>T0T=fDbS|nTO8}dH!(?dU?27xoq#DC!@L7%>i3M^9&r$cu zHDQ8|^enB^K?d89&%No_7{|`HLp?uJUyl!osDPtL{uY$45=LYtY>7x>BrZnv_eIbp zR8uyuLFp!aKo+KU01TaG%kG}d58z#RYMuh=Vu?zAZ%}O3{k$y}q)pClqUvHpG(~E2 zYsa8i|8-pb3bckH4-Eq;!tGo6*&7#~0|^MsF$IZd4KxPJvmA`|@SIN7zVU2MJTJ zel67`-$xHZ_pIXyQmwdJSuicWisEm~_=XHYQa6}m=wVgC>Sa2OLga#>F!5*U-b$eP z6SFNaE%GF3G8|HEN*-!l)iExJK}Lz4b)Ejv{M(Qpj8P)aB$?q-SjmjYN^ye0jVCkZ zP_hR^t?BCYwN3^XI(-{P@pFO~j7DUpVk zYSIvtSlAZzoxLg3$w9{$ZJg~EmW@AM92$#O56Fo+l8Xc@CC$(!m_F+gS->6s4gISG z4wB5Mtj>?=u^;QVY|ZcTP-iHXlF{M_mP3R_P(CI0Am+k7>t?oY+^2ny+y;&&jH*ypVZ|c4XF7mWB@->z(C&(f-@RlcN2L!=s}8ON~Y^ zz3a@$ki-6{<|{hqNUTlte4RNXxZqYgFAW4*wgy^W547wGw7mR#Y=p~gLlI;B$mqaz z#y4fdFdDwW-_jS2hQs_u<0HdCQOwMU#tXyeM&r3`gacVd<2D*58sb8XuNgJ;$S6naw%Y zoUCZiC(*7fhMag%Qa#;0Vygdl8UB{NiLXWD*N3l<#!n0Tq&F8xzY4{OxKTW&temGE zt*lS4u}PhlxUvd{vdq}DG;3rcSFVeVP4{Ju^#7KY_9Tkal~1FxLHflUV^dGw5|^*# zW%0RFdCfV$&uBo{AVN|Y+u05KjK+N+cNOd$g5lIGa2FXZ0Bl6@?btfUoe_r@bl689 zc)X?xy(U#2#&mKl`z{Z8Ia_4QsV3^8-kC;Yz5T$RTmJ@^+!D7c_4<2gg+RYtUdjc) zqZ4!e+F6V$vr<*I4^=6k%BaNo{tXE2q?M_uD!;I+Abam%)Kd$Fbs}B?*-@LmJxD|! zL9{1S*{72M+yniDlGZ>(iESnO#0j!G9fYGs8<}CBU=ks&SDnGWRF2O>fy46Qn7~#f ztWU-Cj_@4eVzf2XV(kWCvt>CQa z;Uj0O<&O$fh_W?}GO{-|b3a^l_Cr2#g6ixfy;;7xaqx}AJ+{8Aav*C^Up7U$^8Zm^ zb_^se_(e_b*{HJL=onu_xNEcIV6tnpr8Iv4y4aHy=Lu)>>A(uSgb#eS6TQ2 zC$mYeVP`|><>b)KIlS80BgsObpk>TX)gI!^e-Ci&Yp#NqIGr>K&DXiBy&oIVJDB4@ z%hXWpGLshTn&-F9v&I~630*p~uPrNlc1z&WE9(y)ZQ|aq?Go_&?`f*)2{he%Fj1uz zy#VEY28A~3q^@y{8NMLs{ltjA4}zzwSGOWkQNMXd@0Lcx$AbIG&cryZ4CN9bE?EWC zH`C8wl0t+J6|4|KnrMMLaX?zF>YaYgB!ZYFvJ6EX29DBJ((^;c7Lf42X`PkCRH^Q= zPeAlo1+3PjXN`scH2-dLVU$*PJ9jtF%L-IRx)y)QUwUn=yGHE^&jF)in=rCRIr^$5Tmt1?6TT~6D7EG_UEi{K}pEF zWyyVJ48fu4{pXV6mTaUQGjby%7}eICe4yHt!yhx&P<)kq#@oO6l{7dxMwRxfs^5|?1LdV5Dy(Vd^rV&FP{hpBPx5U8561s zEG{wDBS7AoiTpe_QV^Zv&fJ*K^E$M*vNuRXkd90N%#|82-HW#m1B_WpCJi8C?mem@ z<2(RtIMXFPBLKl5c;;kzJ8bYY33yhrwKpTzh9@5aPyf2l2G0pNqLncl7SS8^sGyd{ zlf|zL!e=2*01l`Eo>Zakwee&Dv|R9{+Sw~uLEKZV)XQokS9w86d8?dRNP%1J-D*U4 zYXHeP*n51*6l1+1qWZe%KyD;&lMS2#F&?QSI+ECs#MTz~XA9P}E#4)-k;NR6ZR!q$ z$@)Bv6M`({`MfN(9iqqD+b_ztB0P3B#*fJY$4>7%5N-w7g5`buEl)%GQT>L53P<{l z^cv|t+0O%|Ta%tAd4;NlPEHu0--}kKzqFHa(DQgXyD9cJ)JQGJwZ#G)5e>C`(}uQy z5oDB;uP=S-y+tFWz?|KVcz?2coRF%jN+R#SN%*tq(c{QW4#gmLMGlquZ)sW|Uk3o$ zSHj*22U(s=?ja~NQDB2@$FT&Nvg;pgFE$0AX9fOAWVBFOMf6}sxQc_zv1)j*-AVmG zazABYjPNucNNpky+22YSRT%YJFY$tpPZ4Zzhx*0mxPa2CFQodjc<8lxzq9uq_UHw| zLM)VX*dP_sG)Qt356XsgO!F*>ATddmRl~VBr)8KjHRS~ z=sb)WLHJj*Bvn_Dgn#riy^^M@4%*K(k=lFI*YA+2HX1U7Pl>tK&^Vi(;-xal?{!G} z@X#~D8rU&%DmQ9n{TbA~IbFA6MOmfMAY3A)Rk}1!LHPT1%BiI1$hYio{E!+A2f_~? z-$6bzV~yl9oV0S!=VHZIVq492dh1I;*-nL{M>{taM+I!`u}y&SF|KWE90Dw{_I15)B&+nkimkLWhma}bS`H3xjUt~+qomlo0WUq;* zPAt0{8^*+=sT5q*FEMN+1C!W$K{>51s(LBuxsc9+5+jnH-vTkZZLRF4dsTbjF$u3` z@xM(KQR6NyS)WtzV~UJZZ?p_z@*nl3Z0$M|2I2G6wG_q0OPIkuoftN|zVL|pD-rlT z$TRhQ{o;6DRExM|<;5SS+^YIpDgCn*)S&mmLG;$4`*&IhtVE_EL9W&Ni;!zf^*40OZ_!Bj6A858qlpwf*S_?t-}T9wvRuE}J4nLIC?TRh)NXS5KJf=E z;-Ep9>i8}MpDnm(qYKPSdS*jtX3F_;>3PO_h^aWiEU!Z#IeB{I{+R#AY-(fi8z#7* zDvB*@P23t=l%b=5BWqmqOU*@#APDR3J+h~N{7pTp`Ra;hnJ1A7B_`KZdczayq7P z0^@RIg|;sBPH1HP!qp6?t&8KIL0hGdPnt5}ClS}sV9RQf{jo&BAaR||x3K5s-C$6z zIuqm7(KU9LP9J*l-CqGpNS~a6K8wC`VoJwOVCRtdusfiuDr27XiAZOoR67mZW0bZM z*I~IWnE<=^^HIyXU{tY42ko{Zz z9iuA9q&8?r2{P(4Wc)r`RusRH%@RJ$cir%f07H~eZ9Ek7jHS__b*$PtrVk+RZ~%EH zoBT6=3D)d@3C6oERKelHc9;-_K|a>Cx!4edDk`!PuKGJFDvm-x(H4D(kR|AS$%y_R zFxQNIHB&Pc@L}K;tNd$}))B05Oq%(EJHt>dGY&`Yz&mBh*)&}3h>${ht5|WtsBO^) z`NWF4=F=0b<~xdu;5%$JZTevHXmLHS3#TV-B|SA7*Nuk1QHt7>g(TvZm-)+ROW$GR z8XQ?)prXPI-znxv^*k5P`p882u|^5_R{+Ggs3THLq%HD-nJnMOf#FC? z!x#~Pp_y+AjGC^qSRBb*@wR|3&=jhek@ydWwzjyQIuRr2eH~AKJ-&`i(w%j-GgIhT zUu0)=st`AJ7wPYVf9Eile$!|W?;U^aS|{KT?lpcB_qwlCt&ysBIdR*L#b@$NcP&s^ z@suy(&dY4#Dv@ifKP|-r2TNbq{B71aC|JcXvZ~{P=p(+cNGIb>&=S1y?>K_`lrZfd z>R|f=!?0(b)o?^oLWZn+DoO-l@+8gX$@qdb#vs02X5&jnOZE)#q#r2F$PX7Z>Fk)8 zOeeR*U!_b?WL*792kd-$y0*0>GnnotRz&Fx0n9}KqAf^gZfzuWv<{774qi`8#Pv+WuI0p8%fW(Npb){~JQdF64dT2SpT@Y$YOB zj@3^4iTQnW+6;T8pWxc`=#k9DqqOch-8D+R(Id{tDWx-L0mshM55JZIT`ipAHsynj zLAv||A7Z4U+rvCkdwt@qUcOJCFOr@wwm>!a(81C0c~}8LLEl)-a$NvKIY>X&btF00 zT00;pS${|6%wr^T{B~<`MrNx!P&re&-uh|yulF*+{~HFmXRK}Y5#f+o`$6=$91%MC zPPE9Ozn9v^w$NEJy*K@gU+-m`Sd~Ups`;#ysE1RquB*)ONg z6@TWv85Cn!y-Qs)i;E7<6`83IoHg{?M;P%8?tAPgY2uLbOCZkK^~D7z?k5XnKe4t~ zSv|1F#|dryt9nF~ea&U6or@H3Mr6SN^$B>yC@kQe^1ZhOJ_oo7TJHt0&WOH!Rfvf; z#VxVzZLGYHaI~7Rh3*kY9%FP`3M-#Utd!B0^Op0jC1|g_CV94DU2h79w|K{ zWX;%oc#ogB*Pbft<7#Ul{sh(2g^}^9ZI%A^Yy6~a%m45b@b6(3B`^5*{v+T$957}b zmNa;Kf2_5c7{IU5SE`<$5UIN{862k`(@h9}rtZ;~ZZ6|9X-JMvvO#31Qao$yXz;NK zH}_;A_Dl6wOX7l7o~XAk;N+XN-#Q+G$*i%r69Iu4UfB{VneLyyEgY`G2KPRHlYxba z)U9^*!@RItl}r~Q{Cp{+u2<@sQg^o0jV(vKU{_9JtjY7L>3bqr#Oca2r1Chae1=^a z--+RsXUJ*Exv34Jm_ zJQXs(fqS4!zSb&iu5J6>fd;7_nMi&fUW639v=UU_4a9aR&yR$cjjsWmP!)MQHe*i0 z=fiLSW^7oa>E>uT=}A6p_xBU(2P%K6-!s(zh<{6WI9w8f zYClE&AY%Q!m<7Fp-4T$`f=~4*(`og`Z%N9mg7~1>N*$`rtVI&grC;c;j*an=(R;}a z!I&@ed8jkVWY>@2AUbeXxKe)dBjbWRKcf!wuu)jvXVo=dAvQGHDzgA)15uBpKM=3_ z)=Z*vEPg&QLONR?VqpYJ`^~*cXEOdW%!dpI$J-a_WN@!in=$Z+-%Rh2&jMTfy!ZZ! z^paMa^`(n0#gT5JOTE`<6w@>7c)W=p;-j3Uo}dnkbK}rk-+CfNV18g*{+@cSvvnX) z8p$bMQ_w_OagK9EqAj0-*||MmwO!V=WBS^`CV{UmBR37nef@5$k}P7S%VE#aF9(Rf zXci^6ksk&dvkPR1*zPk4*m2jIy($wWyG0k7-j*?l6xOmlG$l<}t^mrA)ax zoT~G*R?lCg7Qe({)!Q95Y^#o1`!+HX>h_z@>(%F$)mDDJ%*cK+Q>!u%p@B)d4J;z+ zKganKk1K3q854*>%kKx16C11WS2MvQb|omI(aW7apS)eSOH9$^4PPVn5F3 zcB?kvpz-3<5PnHsbzuRWcpXmEzG@AXw&B7Rv=HhJ1o60xc>FC{1=>E8)pr58n=&Hr zB_<6o%#%Wiq=V<)I}+W&8EC?R;Xq`KZs4@5o30<548*Rhi7#P{d{6CMp0a~Y9l%JT zyF_O*Lh3?roW~@-R%(7v+Dp?yISuR*y*jTF-x~%eM0g%IDe<4 zx{jGSX!xBlv!*d;cMt4k z5^Ow6_i$}G=WFvW$p7yUA&F|(-fgNl#S@y^n%_OQIjb`0+#*T;P^>LLS{L~v;w>|P z{eE*Hq9pa0BTs0A=FKgUIR$ z0p3ZZ4P#vG5tO#bed_!Acz%-37rM8s2*%US4O=FH0}{0(vIyd~ZoMhF+LN92Ghp-& zYgV4XOs4Y)`ke5USicwcV82&wZ4PRw zgj)WIz%5c8D*Y#+H%ci51FEe~ZCA&GxiVBSd9eD~oiSqCp`Q5;Cz#X36dDMc(W~9= zatRy%V~W{z?_yopC-`CJ$iKp_D0QwMR{CvS3JuV*YXJcYR8SUS+LxXm6s9erq*|!< z2j;UG!Y36`gE%;oTQV=2I%CSxT+?`-44pseSX>}|ZM{tzz-MJ^D~i7uK9kQ$pKoCXS;Fd@dR0VPG>@e}`MU=-<^EF;&lc+jw>TZN9U+POA)}#I zX0G(lpn*h8n06HO*5(mv3UeB-lBYtiPw`8b5C%M?X zEcH6}5V9C@)C#Tm*G7Li+R`_1o7p_a4XeW5Kc^tkYL;GNZs0@mZYfXYqM2?jQbGbkkLbOs}-OV&^@eA}_%FeneSU_FSZ3LL)C#2Z#kRFHEckt zl9nS9=!@BqPIo-nH%k0eMWmy_kdnOu_g{%>R9txCFvnIhYO8*yUA8+o4H zs(uJYfI(={dP7pK7`XcbEIYZ?*rh(H7I8oa)ql@Ln47y-ocph*TYb_$L&^WS2lTT) z(4*qqk5G_8pdD17M?Gv&) z)TmOGWc1Mme~*F?(aK!uaJ-Ef8&B!jIee7x;CNrJrg(UA@U}};R@suj4x}{2$GcO# z?JRg~_w~vZ#8RN`CK19?he8*Yeh_RM0(m6E!d_USJf--p7CMG z3Dw}5zL-jIcnT=qJ0BB>U-S&7rAx}>UJ$zudqLO-T4KRo5S<^2IRPpnd5^i(x(e6k zX{#x2RM|CcJ-~y=a2QesBr=T~?}E1}+15m%(d6oU?I1K&dkWj{QXDk<9u=(1uB{Ua z8x=b(UNTlR<=+2|SvV6K$hDja)nTp`U6Vt#ViHm;>dt;$d2DF|AwSKXoq?Kmm%+<) z4Z~}G$~vU^X&iiQ!RB^#n1gF9EhM{C|o3(2VZgU6fk_VY7?IIIq z&ni)x4^3X)aue^VYD(G&1{LS=3PUSg00S{U%b%YF(m7sb2SJWIi0iMgpLTrbTi0B7F;aW21#!rzoY5_QH7fHZ}9|a%iz88Lr3r- zF45X(y@5&y*f8A+xmOkNL&}CCS=dKNLE8%S1YbklPK20WCGl#1TmM6U$$y5 zhlhO0V_b6Q}sQVc(^1&qO65=uF?|IY}*$HR~GBE{8w= z;>r?v!H|1R*W58cf z((Q~uf=RlWk+z6f5ph&i2oS55BnJ|z${}_w>1bZPNz5adJsN|=(RCl~gwD6}KOiae zb>k1Q&0T#DTpDgH0E5Mf^|}wy|Cn)z?cP>gl#*DGuode>CF>fu)tWUQ9(lmwacpIH zoGrV0;Q+h8C{9^%mXlg}4`o#wdqTaEY`eIpJz<}oXTd?TLMz-wR6B7xpaAQj^kbfX z0l_waz2cZ?|F0^JCAxc897}O`QnG^{H2u0oon_OnyMqxl{krjtpy}7y5pktsbczl_ z-*sGvnaecFKP=6>+Gajo3KbN5@v;Msk%ImUl^Th))?I}F+j7y(OJV%LLQ8G!iBZ|=4F?v3x|xfuFaz=sJ4k`wjl-9AL3RlUV%CRrXBKPbe99_=4sf@*IjpA zEh<3~Q3*=NT#nucC9#-=oQ<{dd93zTz`0ZVl-u#*0sKiW&_>NA*aBz5b;&gSd}#P+ zsL^jxGFPzs#VBaB-hFGJI}TVuflyOAbch4W3x6UMf3UxU689@dIu6mo2oL6T{wwjZ z?b;szhu)ITH~@#q2<8J?)?)VmDXeU+7w@rr{P$fFx(p0kxx5hz9l6FKJ@st9eUkwe z_Yu_!(3f@7%y$?Q8~dd35%khJ*tYz-qD<(vU!9_W5{XtSXm7WauKmE(o-HU=klVVa~>KX6*)7<%1wym61zKENIn z38RwgOKoK-o}fsQ3mElV^#}ggCpX=XiB{-XyacOagVb&CV4Ik8k9u~C%YtD}s4W0q zD8MECfVG8|ijsh~5plpkCj;Aqf#(6iXGrm+he}zEQuQqLQ6(T5dfi)yySJnGKV)%t zO@aEQQ~k6c{cGpY>)kLt?kZF$JGHg&|A83;<1hiIJ`;1?W+iJ#BFIN**fIlqx%*yo zE+Nofk2p@zALpV8tfv^eIG<{z_@>o&)YHA7YS^cZ6n&hk?NfLdNc@zW#zTjE>iJeK zd_fAt^9kS?4aMG4I>7~IOL56}um)^u3Mw*Jt_RQMcl=}EPbBZKg9*1*FB569qM^FTU!L{1XhF^UFr|cAUuu@ zxxr9Q`A5fV#|e@c_3n|-LOA{7<4L~#kPJL2n4O()hu}JM@gn!Hp2SdB*@q(JK;wtx)1S`o%Q*jTf17_pm6n#awIKoSse-Tkh?xmPPCAmL{G~qBv zPB5U;&w zO~Mk-l>p0_9oiYfB+1@NvX|P`zS#akM`b%9{KWxCIG7j%+?Q6(KQHOMR`~buq-d4X zqv@S{`;CDX=zSUnQUtw22PGER!Y2VH0zu@|!@<~0psU_7)a-`!2|O`dp=rx9K{yQ7 z2rAHQVW1Z|D)LP3V&DRPyLtGQdVP9S$S_pT4*%#ltqV%P^?X%guJ$sv;K9Fgsr?`C zLJ9x)IPFG&jRs@phQ1v&dS1tbRf(LsRBn~KUQkpQ31)sNJL$CI{f%ZO%jN$gq;ifZBeWB45yKr@Roi-mR*(O*S z7A6KOtHj9NrcK~0oB_>-^vEy`idcr=HZWyv#^a~_ z7{Pi@)`_DvMxEGXpnRA?*OKAOU7*eF2RSEVf0F{$Rf0Z+n_n!gU=Vtg$U?n)F+;Q! zB72NSL;Y@$&Dv{!6>I4}qyC0<=vJO>%k1+mL=)V04|;3FThbc@KlogS+!uAH_ZcX( z%k}adBFaA|%VT%z?|OMQgp~-pQusV!mx|N41^!W~aBq^#rLxmMrYAzH(?2R%dkD(~ z(Zi(6lCHYeE}V*mhQPSirs7PpyIaMX4sLVB8M7O9(E(@;7R(OVw8KKkqm1fFrU2U?<5sAd zyD#3A09O>B!`sa6K)a!f6LBkTMGa_Yi|4z{%~+JdHtEr76zigOm~6-c+7}qOfz=NG zq-5*0O$Jbbyo$zncP3ZLT`L;fxh)lqZQNa8pzltEN6h~4>{~#|s}~}}7y-5Q$!7!{ zu}^;rPB>OgF_+31cL(ABTl@TJbSR&DIMnW*XVI%$M6Y&*^L3YcHjv;_vz>6T31fkk z(gqd#>f&^40XC(3vSd5OUzngBMMbj8aww^kw^LybRuSy5(5jf9{jvN;r)tNBjdTS? zO-F{aq6FS6gUO!pS{KYDsx=jFsldTYixvdet+%F5M#1-5|IZJoe6fJHsu=e zcnElH5V}t~vAf1mF^ygms#602H0SxhqB*rVH^0`3deR$!?Y#}~&&XmwyZzkI3Y1}Nav*eFJobu+;M_NZf0;Y}Ytqv2N*sY(B4>MoJQCfA83 zze6V)M7Oib4hOW!o_}dqpej{b6T>hh@F!5L1G{Qs5h3;FYWEY*un!!W-5-WP!LESo z|H?g}5kb3EDT|RDHJNU@oHZZ!&Rr6P*0!2T#!XdM8d7~z6RgvOSdbSaI0JuK-NcGwvzDI^BgQ)a#JGFo)%`Zrvk10b9;iIp+SIa+ zr=A25upEFzCM;=oz)jxF0fW%pGY42;r=A?F4R)`a22ps%L9XJH8;07n<{G3R!r1YJ|;{ES%D`Zm}EiB-^3L7zEaNlQ zWk-~3Ok!~y!Hvb}f+&n)+85}|4dKN=XM0DuSBTYax9V7>h666we9xhy>l0$JnzT?1 zMQ~Yn2&;9(Dp#`Z@(bXK`{Qg7<|K>u0Y*BixR&{|cp$hR45N6-0`@-OlTh6Oc3g_I zL408ec3*HCHSkCTWsf?(Vko;4D)t+oqk`CiiM}%=v~YS~q*EtfknG6ZuFamn!Gy7( zVl1dIWAT@y8rH2->WJtNmIIGO)c=CE&x1+eX+zG^_jt=7qByz73xymMH8>rq zR#Od>F<~O=w8B*jlDMYVrKOarWkTP)Wsp?m-k~ha?DH_=@Avk6QF2H;F=-{YsXyhI&gFx@~<5 z>|topao*XUO5qXJVf$#2CIBgd4|yZ08dni%aUN_?R9Q%hi}BCEQH(6N;xsF#QB$>h zF-+zzeI6gdG;xT?&a8aoLtoj;x3r z$>bcW%1Sj$M0z(7uP~ZDk{=t6jLF2qibkr#wd2?@M^Y-1-t{8Ek-k&=Sf=%4Hau>Z zkE}+kk#V+N`x~?SUmJw@I}(vgu>X>@>@P&-$m6*ER5er1?!q>uX!nbvowQ{PE0zPd z*kCFIZXt;?N0K&EyxD{mQ@zE(jn@BQ_K;IXw4~a2BXUBPLebv%;)Vvy&DbwV6~ZI- zv{y_9Ou_29HDJ8UA!{RF#u%;;kohrYMz0`$4^?Eu&`Qx(3M_Bc4q~gE6BH*zmb(~5 zX6p5KlAATM_6DPN?34|Vz_5vyayJW&vLI!hOgV?cD@YlHlviX* zqfEiJTMFeil-eg#vXJs;nX*x)SdsEOnev)UaUf--OnFA8%tFc^WXeM_r3@(#%9N!t zWf4;DlPPzK6xB=2W~X>$;&_?3QYOxliHb}V{gIt=t4zF-i4ing8pcCA)b}?CKWI=J zQFIhmfGK~HDc{c%Xn;(T@>`kmxlEaelzN%6OQuXi$~!V;JyXQjME{2NYH(WvH2S-_ zaz+oNpMb~#Bf@WCyVL*+$y1!EAZK;Zma#kyC~pNQ=V?SJR?^{RBgdWDNA9G50E|^! z2k{QJ-8pvQ+y&|gd~H+~qTH+Tdy=4O@{cOhgx#HA-G!Vm{JKSCQ@Kg$A9qe0#Ya`O z;!!&_SHyWSpcatvBE~;s+^@J8eELA6ZxrO@K~X#%lTQ!hiJ!t% zaQxKMc+?)0)l4C*?0U$t*P|hrdM|dVelL>XOa)Rt4E=-M zC*w$luJyt9AwETjRR`xl1XODYB9Do6oT*u>9=9k9eN@ep);LK~QL0Zk7AxyhyE2vJii4@w;I4qsi*_{!6Z99!Q7_up z9E{grBu2gHkWj6s$0MDlYWPTv)=^K4L!x$IDd~&88pNk6oE=kNObo@7Urc7)o?7AP znAlXC8hVItsb5YfEI!$v~d4i5!rGjAV!y<^T8XD|8V^|QUuW`SC(D+`3*C3%^7duR z(&|gA6yB?*YHCZUkY6p{L-Fg72YMW`%g4*dHo#&VYsU zac+j5;7#*TQei{6K^rD43idl@NL3?U|FTWE+#Hj^F7Cr$j2xIUuED$ljXQNC&qx_`@v2E4_nFKEQ@BQAUzQJ{Tq#{h%egO-~ zv}yPgUh;syaI@A(W9#fw%i7`q#OsWHwyeEqcjNPTf^A-^&@lCOiJAFvK$c#yG&O$y z0b5oHtl#Vxxp&*Lrp39pDyz&lCeKg0(Gj=cd76dTvMhnafHy;AeT#*>Jb(?cuz=T23*L_LC^Vr#ihhM*&DocD0|lpAFo=@g)i$)sUlQRc;?|Iz zZ-~!h>_+RutlHJ3LLbI)NPQTm80;KUANDkoq&_SI!_Lspi#Z5yAI4kcwP>tm=WHWh=bBNQjR+f-a3qm^ZkiXww(XtTabxO z>9xDz4yzg*4|k{~j#fKf<4iv@9G7sL{Wsyx?K9y^xZ6ctS`GU_VN)G_33rWo^_KJo zcTZeN(8lhc7z`xRDAAt1ciAeaO9HqJ4@b4C71aj44w{fkZr79Tu#npg;{A8J{>0s1 z`xQnaE_vzYc-)cm1wbu_+PoUNvtn%f!WW=e_eagQQ98GERuoaUXl`_5$m-1H@V{tE zMQ3Dhgx6#Lq73x;E^IZ+E1Y-3^^&8a@HEV{;o>$K?k#Y;OUL%!J5o+tS1!awSj(*r z|Hxe^?5T%`9_%u{JB?&47HZ9{%`k^U!*NrLFyQe2M?gTu1h#i~;4Ua`qdqzkP*v1J zpK#vuEtfMh!&Qe?!{Mr=eFN1u8IafysC959Y=MRC@2W8&ch^Q)aR3v$Ubst2O9M}V zuY;LuxnS0oVuR~p2hQAcd88&?gw4CWsvci_wAGw2=3f8DL94u04iY5>Q-;4I-Q z-T;Vm4fkdY3VQOi>MOtnDLZ0vx+s0Wy91oE_io|lN9-NIPZ_W;N>`yY1gwj+c6k)= zh(hhtT*y<{){(xDFkC|iI?zTKEy6_v=~lFH6P3p;wejEfux>bHpAtIbC~G0fgD#fd9D6)Ts{n5!w^aaIGy2VbDc*!e+`p@U|jpB=mRIn!{~C zK2_*I#|$V;#c^$cb8$uDhD|nHk!Vv-2JUhB*Go#o5mT6vI&s_Q)TWWRKQTUlF$tPH zVZ-@8CO}n#$0K+YBueHS*oA{IbO?^mC7g52*ayWOT{F>1le`Xc+a_ClRvfUp4JN1Y z;O3_SZQ+4s5Jt6Z?g%tj92VtH3utB{X=WPmDHqYWStyp?h2jVF0AiS*-RBl4yvlzK zS_UzUhMu_s4xDiQ9S#ZU#|a;9qBom3_eju0)}Wv}Py5&9k|r*XpovRbpb7eI9E%QP z9gYgPfZ|d9i?knxg=k_6qER%#F$(al207?!23~0S7nxUkGgLe<8ZEdsJLPc7BTS$C#b-o158d{sfneGEp-t5bdAxgx-(RjW+R^)fU1^%zOv_{Zr&TOyVo2@*kr;9 z(FSkUQ1=h#P2Qo`c-kmIB{6WZ6M*tUoUF-lar%WgH^*sr7l@Nr7)VgGN6WeXe+?KU zPe|jj^g7(@5OoL5D#lgPA z`g+>hV3#{9U>3Qx7Y4$2l5M~&ERVTBT#GjI&kMD6LDj-!2tMyx@QjPjoNt3>@rTRk zDE{IP7o)+$eoDel13@71tg90CYfk_{+U@}+9JRc%!B*w*DMHrtuYlC(g-`WU`|X!};jH=A zVoN)O*DEoWDV%1U+JDI&I5SGvQ#Hc;fb^kZSm{!B4HR$pb#PqMOV z3vRITBq*!4D=^%J8+UW%Gk}jS=l_UMS&uU*CMA0lyw@DJXaC@y49_U`^qPGCuw*6s z%>0oy_#A0FLLFP_3nai*1CEmgkbJ$1+4Bld)iwlruOw<>!-S32y0?3G+K z_8lKwYPyruao)fy5~-k3Xd|)ybeq*0C1DF%T8T`XJtqL9g0tE-v;8=b?1jVm%%gVo z2V2!$-ulY1Ku{vUw5hfc0rqZ|Lk7BkQo2Mqd$9 z&PVq2a|$-41sZW5>N~bdpG^%Yr`{Ks#1>2X>EZsw_7agBA`l4&_+Pk_fXzVswYU~* zi^Sy90E(D=oH&feeMXK0d1!7aOx678+DNP?b{9>foFKGh7 zo%+<4(3E~sJx@BRIhLe;=BPOgOYJ&s+6bJv{i?6czdX*mY6m<)ioH=MD&Bjr%GZa3 z4QPv|9JmZI`{;e?t!?;+4-rK!_z!!at$2QvrL;G(+-pol0tiZsPMvll+N)%rWpgXe zmYW~re-6D`J1$?q(A!8PAUX>NQD+)-@&QKNcN}rKSn>S?hH8%VMfaOp!p}xh0!9u# z)zaWmpp}!@OFx&nM?F>ZZIX&p2@+vf+kvpJfv{yj*iHjsA!HGAjoTq%Nh{DepBo1eSc&YtK@2fzFeXrBl_K@KE6R|cCgiuwQTUTpSN4k88as{13IFLhK2TVZ{DpLQG#u&Gb7tb#kI%n$q(P^f}U zL;g40GtsxAIgRa*MNCH~MC{Z_oC0^p3d*Ho9kqG5`krXNxNr(r2uw>s$s~Rn~yH+o*C-GZ^wta zkTyVP(bq(buN_;3S+560uXMmI8{a$|* z_aT_!>b+{We!f`a<19ucuny+*II2@1lnGSgV5j; z8qxGGF|4mxcoqW%Z_SlMFo{6+bbtq8RgmFN^d?lRJJTD?zP?FdmI|z-?&~?Ior&YV z3V0S{DiN;)ah(G=5QpsWdZ+GEU|)qp`)alNpdgU&z^c*{Fs_Kk4>+hs8-wcl)&`X^ zl(Ab(u5VZW3n77{rO_)s8+!EM(HL&C5r@z6Qy-o>1S#7lxY&&g3@!$LVj(W}7|68+ zF6Q{2?T!{qo>F354gRUvXLEG9X6C|>*e zgQW=Gbdtk~cA!TXAxoCL=_gy%cm=9Zvd_a(z-L##ieyRSe3Bnw2K^cy!I33`A2sRx zXris^jSxSgFN|n@1o{3nSxJZ=%?Cdc1sV?`UGO8a)D3vBV+;D!0l|+-?b$nYe&h`C zBTV)e8~h0I4k3O-ZWO_az@8FzF+&tT5+5Z$!Z9|%jwS{k3A3XKL>s<&L3UK9N+uM^ zj`V7y*%75fu@W=b(bs|D0ZA?sm8-||0_sUSuk1LWrAL2p|$%RN< zcEN?7ogd;tZgL?ES8^dN4+R$@58`>dNFLwsm>k`{Q6>rr0>cin1F9xW~pXk8Y3&SDC<@I7*rWh~;?cP8d=4UWC$~G>)5NY`Jby6rO@M-S_$YmZS z0|fnhweK-);Mx>(C3Wz@`b}-FarkeG6Kt8MFrvWm35Fa6kxY`v(dC?543>ORG)oQ& zsV9)#0)T=a>o5v|N*fF?1F4Y45`#Mf$%#;0-xjwLDk7>nTmxKHixMk?i`uV%t|Yj8 zVSEDYr7Nk6fEI>Y=6Z*D_-RMNd7KV1`!qB|Sx?m_bd5GFLhUf>_w9*o9C1Cn!L;Rx zY@l08a#f*z-{Sd@{r*4Td*+d7eEYtn?70tOm@R#;vKCr*lMtGfQwM8~B&^y}eJI|a z*g3x1_A96+9I%bXq!&*ItKR9c&qdHj=8T)N#@ajs^EC+EcZ~4+_jL&!LH?dvp%vXm|e{ zE+;&2D32kSs{MVsxK0#SC_*y_z2FoawiB;@gIBOQa35S_^1{HN(%!}W{z=@?k=pnw zu&rmBt!H{Gl*#jo$aK;?G3nk+=r*4hnk-S{Fl3hHXvch>j7T^@BQJn8n z^ONbo6sL@+mzL*xV4tie_;-LV;h9O)iCBZ2#oY%qAh?9;(JMaRJHn?D*!MzD3tC4rJ zExiE)SXK&3X+-afbDXX00a+neIe9*ZhBQz!0$8(e8yhJAo-!~5@bw13;#x=nFg&Jk z_*t~Sat|I1bC7H3D_NjE&y9|BTz1(z*Pkx|Pb{sdv*2c^sHS1Z0~?)3@1fh+p}a+DeRUT(023cy7U?w zj`(NcJT7>*;j@gyj(w1p?phc7Al&RLva7f}r-rsde;(i!2sj|m?Df`sE>PP$BAF2-u$NlJ%uF9#J<&a6Ze&G$rAb_`o6$}2^Opx+3Z1^__nl@f& zwFOoqM59%E4XYIOG?W%LUe#`LUx|YK95WzkNzcIk?lrzdaa^qC5ce=@y)%=u&coLC zqc1S@gSa@RLxi6w+^V>3o4iXt)me3CPiIxR1$V}Y^N<;?8Q9w_P(M&s_Tn{PSPYb+ zYPeM8ZC~6bfnQLbJyDNvuLO4nrSj6GRFJ>&t_jnhy|UiZpNBHRhl;ctyVG>QT-gEd zK?X%iTD>RFyzW>hoR&-5sR-YI*haO2A?5m4VDb;H3%(1GYu$bLc%Cr}V?QG1>9eU# zT%c!%)7Suw1No};X*IC(!xlqsAb#bgr|M0nwkEUB2RduAo3J9h2Qk&2xDLp!POF6u z`&#AxK`Xdpy=3J@0vU|z~9Iz3QJ@t4^ei< z6W}iB%zMPd!<4s~LU&&swKM%dQBaYhfLf4P)7V$I#WAl29&^qIF_==c50FLjjliy) zAWXJBy-*WeezU5(^{U)&5JO!1UkjF3cU zf%k}Q#;KfcIle;EZC5*|Mq}?$zq^kc?cm6p;$TvM`{xuD*P5?K?ZJve3GNYu)Om7wSpubt!b)F#+dEjz)hEdc<04{GFbyj%;&{5Z)-t0 zf}Y&B$yu^U&XU8$Ea@I14hOpNgmUh_IVS9bxi7<6qHfyQ@W%(skM|Rr-oVAeA}i2U z-2NKq2)|O81e1g{7N&`cqp9wj_%E0LuI0bWDvny+U9^O7g&*f*ga5M3rWH$A*lRUE zvMJDGJ^LY$x*j9S6lf=G2Wd`IF{7Kw`i8fvyd&-)_u`$^_g{B{w?pcB&f1mdJ$*4g zFg|&v1E<8ar?Iz%NoYBIsZ4YySd-J&QaY$SgF`t<8I_49+(3}F$?DtaX^Z;s#$;`( zx4LoD?48{%#=peWicuXC&FjAISf0>s6z-_~I;A{`FMA=M#f|%S@9cI-paULYk;(^H zx(PZE=Tmg23-C83jio>jhUAruHq(Gx$T8d`?j&x=6eK(qM2!Rt1{lF3|pn2h|i90aFza za|Zokz}XXTh0yMQl4IJ_gLhzMTeK0~SxV|~4tw9tF zWF#m?`~Fk-#BWP1^whlJERP~uZ|Vt1U|oP&h!-su>{AO~#(fhGb=(W!RE~<0&tOhQ z8o)`$)i4(4a{kn=4pUZF9E`&-9)vl|LVL@aBbIvmK2}y`{~9MHaL4M}0YWG9Pj2;A z^}(tATd7VPz$E=OTq3_P!G&{t3gx8UX-o6?4(TUfv6HY+} z$BZ7R?haAi7C~&GYp{0m8m#l8@a1VJj4QBzgW9waC{}MuLDL$S;d#}R7b;H2dy>3c zt$}3B2c87))@0R;%SJTs$NT`{Z6o3JZjBQ}O;epiZB|Zsfl#lUoScPR(dI3D0h5xU zCSWZdH>aAloj+1Tp`i_#xcBc}2<04{_TVP_Q}p6nVAg&- zMGAL!K`~VDn>n-#+1S_{y^LnBvOfjel9(prs;QxP7i};B&nq~Ly`e@+9S{ecZ*bu98?cU)E9Zc6E6$w9-0$ziMxj|I?z-FICZVGzo-gE%#V9fo9FWLTT$ zzHU`5E;0lmC}w*@Q!VS=oQ#>5VWQ&O#ZVmKKp59lD=Kd6iVGFPyk6M1h5XQCuR%Sr z;xKMdOwg>`Na79H7F$)V2vc{p9w(yg{p-y38s%+MJoRYX2y-&X=n zHZYwg?yy6&!`PNBQ`U3Bvsdnr?c>(RyQXR2NohOX1Egu6yO%DTc7#_-k2!@a=0LL2 zVFSz@I&4~J^`ei{wkQ>iR(Ee@MPv1HOe=6{d&cVN43zZ@bRZ*02oQh0)UBs>r!}OV z?64yn+Cbjbv#Mr2z%i+xS^Hy=Wn0dt^0*3~gOmXf@ zL>TYxBtqPng1(LQWb;VAjXMSYQoL_O6T~iUTqFn*eD;+A%Sv_4) zOV2<@(Qu2r}<(jB%c@aWc+WCuweVCF zto9DWhrdI1se76Urw4L*o~6}eP+?gHjZ$CK$zwFz)TFB*ZR$QjESQjS3$ywm!eLlr z(}=3ASxg+dqad6YMtSk30&n|5?V%-!9G*|LdtuZB!ANip;8K`MK|unB;aE#S9)HVu z%?9kAkKr1;g0%4MK7KZLHd~7XrQP>~VhWx5Q^3S~op|EwF+T}=tXP8ha)Cc#w zz#wXwnA8EKCB7$?nwP_Lx+16IZjimXvJrfz)I4ZEeg`3??Hy9;FfXevHJ|IV{8$3t zXr<<{gY!lF>cQCvaTAp+v+Jb!tCOYX2}euKS8p`mf3-+G(ESeN`OZ9f;4xX|x`oGC zWwf=f@v&~T$T@Jc z%<&aUZouz-{P5Lzv{tX!FtM&w{F(duNGt@g`x;STa#FPjC+-4>0OK}%K6T*R;09u@VX z^AGfq=B{b<;v9r%5UcWhJ*es~{l6nZF5HlzC)REesOpvvx3SUt!I zZ7P3%NU8bk;3dcfs`;Vu#DAgWeAsg-vZj3SO#(!XBr^cl+G8Oda75rIWxss;14?S& zV1XL=Rm6GN?4-ZrH3m+0(!-4GaCAsojR;Apy7b`)7|nfc7&e*J8xNK58nWTgnPrHb z>+>h%-FWt^lN-+*7(A8nGgl9ufY9tyK+PL>A3KT^(Dq?aFYCpMm(xEbHvz2Wo5zYjbtKG^v8 z!DmIONxL^5nDqI^z@$C+?cTU|(vgh^CVsi`z~rxhWG6H!(kIMmucF*u&Frr>Ld`k`bWbQ1PdmMASqH{kCvTTRf z?#mH54u!R#&mKq-tPbBuW2uW!3Sv!PDK1h)eo=YisJxjX5#Z+4IwVapj znoE5+3-nh2qn57b)#Gq2fmBS-F0H7w1ZJ357o^IQk(kx55L+19beB*Lv|)C5GDIbe z!PP$XB<44}bq-vqtVI+bvRi~g7tZnFJ7){$7mIcgL^KwttcF~(dYr|(6ix%7$}Kpk zyW7FhOE9~lDNv3Gzb07Jf147LHR@p@vxYkbf%aMmIxU7+@CdUm`KU{Ixi)vS#HCZ7; zx)9>geWU+As%8Hk44x0Vdnwr;cx>Ly-u#s)hD$*A4c}xl4UG$AG)s#Q^!6TFF7gGs zgx_{#iMXLyF=I)?4+MJIeIkyJ22vF7xj5+L;^5`hhSNPf(u>{cR2SqkoG2A?Sj4?Q zy3X1Hsq7u%TU;ulp3oLm(oFEUSOIp_UhOEfAkQNMlr}rWRe9r)gRk9(crGU$r~iWH z-)uwe2tkhs|=fie4FXh4C9(lpg&x?BqR ziJO&E>$G|}z^KSd^5Fb4Vp7qd?LicEs#)4|s1?px-d+40>K4FgcZKTyo`CMq_U~YB zczxX0l`BSbCEQE}wcmuRn<1*(AMAc9GE^lrzKwEHc67*9IP`F@X$kVUqg01OeP<(S zQ_+sK=*BLQ@ENH{trmUYDxhUU>Od?$1P|Bzmrg>A%hS*@r4NeFOCcAia&W& z_%!csZsbv6=_#&3>pUtL40(zpTvqgc=p?XlFp*BLsBd?u+W{Y7@D1?tQH;YKurDL3 zrxDe&xCAKUu!CS79M}bI4-OoL{{k@mpKFFP3~hBK)VNgc$XUDD&8sK2!C}{)xX}al zeeO%uqK>ZYJ@eb+QpbcXF6^3jf*~0)46R7E708# zzzFWppMFoN?cAx|hfZ=J$*fuj)M$NA?Ske_9L59u8Gzc*H`c5zxCMgZP^`J}EyoPU zFjx^}R<9UZWXIk>$93F?DII!qPwYKOdA29!_-+HRzXhg)rj=se|IS?20CB18Lufgw z2htsaBj-5&FTC=kVxE_b0+7g#Q7VIA;(_Ss*$NpG;l5f3&3)EzQ5)!7stiqaUtVel zD1C$`+?7xrc**>B1F*+;1!h}=Q>_WWM=+h;SECW)%y2_6h3iimX_I3#d) zM4rXLmNkyD=t-*zti;Qd#%H^o$1bmttgY#CKDeqNOTK#`^bR`>*wBiD_c7|0xc>&h zVOK}Gp0}5&<3Jt-(=@H~c^u@!E{6P&D3Q5&MHV&%9&hKtNTZ z%ceATyFC&#q+7K(B=HkbZE;jAwU|8ZMTP;lh{J@)`T?9lH_xgT%+lU&>5VY+knmWW z!J}2RR0JP%@X|BUh&zxYvJr7=vX<9_z{Ef+&eqE^`!G{RmJ#+D@RcDdTo?5+0=#FU zUSNKugA7rmLqlYJYC(}q{=PmkIkLd`sH((0EwV^X)C+7!iTW>(O7*_uMHgajmL5Xe z<7M;4CWd79zFcE9v=Bd*7Kttwm&ML zd+TAA9v120EIst<;e&ekgdV=4ht+!6pojbQ@LN5M|5kpdlOFcg!(Zv)5Ir2Nhqvot znI7J+hmYvt(|Y)-9@gsN9zFa@56|jh`(yI^7Cp?+!{K^Zq=%(?xJVCI>fvAX@O3@B zO~>a=dN@oEuhhepdcVD=ha2?pbv^v69&S4>;X0^?XZ5ht37P&YJ#^^dWIZg?!w2>7 zc|Ckv5BKQd7kYSF58Hev>%CMDuhPTudN@lD7wO@Hdib~=KCg#w>tTZ)zNd$u>*2S0 zcv=tJ>v-v{hsMy((A#S~chjHG>v-1m@FP7m^6k;-cY_|jsfW+$;e&d(Ko4i>;VpVN zLJzOi!~S}htcS+~dcWx59zA?p4`0+n1D=<3xS!C&d-QOY9*)<;ReETYOCFiv<$9_5 zl_U`w>9JwQE{Wp3_Zu1RdNw+LS!a`YKUNQo@~?j>^DlZy=C^j0&&K6(?s@YUTT186x0IBYmdtQl+>6UfEE$UiW(-->9=maKXS-)lpELWO z61#ZK`UlzVR~X+JSZ0|$cgFmZ>E*NM-eH+vQaWRvXD%w4XBp^0ag*Yb)sAsbcb80c z&Ye+QQYz{gJXq9$@-s_*c6nQgQGUey5;VgzcY0aboY{yeo<+0g%$`1fu>^C>oOy1G zr)(xZY8hAtKx`$m(UR~>0fW;iU?|6ftZ$(6`XSg}ZK1BR`SZ$3=DQbL=H32lU}<1E z8z=s}c_P4q%LI$8xNi9A@p!~jO`ry(w?Vv%9&d}d3F{w`A6eq{I2I78-Sj-|k>?^k zj-09Ss54HlKS7VP{?5q5bk^ThkF)+b)G6|#Y=RzV{oVCEtiOjIXZ>xlu#DI1PuAnC zznvau{r!=jc~~|P@dQ18k{)ONMC1>p>v5*H(c`SApPrxfv`2cPUQY)-&iozqIP<3= zKl3nu3euDG{GIeT^PBZJ^AA9N=3)L+q_@%Ych=*~-$joz|3Ktt9_H_d-Ojdp{{DKL z`P1|`^IwDf%)|WGAU#>nf2|&8{!Bg2{MRBs^DuwtPp1(R(psYzqtBVAwLUlcjd@z@ zH>0nZr=`9U>A(m3jj%`dmC--U(^~%+eZoAg^@-6B%+p#w7`SJi)^RWK%{;B)n>Ze6 zA8jvo=7-STJi>A7%{%qQGr2ie&J^+DHS6;Z-7{9iw{LUh44?L8c4WC{)1JwjICRLc z$TZZEE1zXJf7P-)ll9L~3EU$-&bgpSvDxgle7g&-s#^Mc^~tMIhlFKbmx>!1U()TW zTpYHAHKl+vSEh$ce|q;{^X7F)h=T9uz*1aTSP-tIdF;2#4uoJC)zCx7#kO1nFS%MT zz!Lr4OHx+mJ^v@$FNS5fGS+b+cp~xQe3JO}=CP0N&S@{;dia{l^J4pG#`2r3|4Sda zoa3FNN45@)C;lGsP11|eN5Ed5(MNA573ap{;MFG|V%}ejmoZ}tLA)30s4(pw%eqd$ z)qY=BYx{j^BL4BdLxd%YPM`VU!Ms1@t5In`hhCI%Hs{#FV&}M4sU{4|l=EH1_wUYG zWzA_XX(zjEM{fIl&qjT>$bUoLL$yCdrTrXO@(V}j+l$9Kl-35494lf>V$cGB1{1{=DJo{|T0SrMSpG)@~!gOi(5@11gf&VeA0! z-n=LN_{R|6J^$Y6oLF9$x2bpT|3bU1!C(Nj{;74M{ltkerpfD!aTI)YNp38!Oa9k; z|I>UV_)C6aak0}@*m75e`zY?y;euYbZ@bcZcg{^B9_+U?_xt~jjiS?CuWfGDZ$Cx5 zoEy|TEN2<0`VqycITmoJFR}Ili?%V$Pe#DaFMX#7vlW4gNw{4Ecq1q#als z)gR-ZI?Q=Iik^`T^djaB0e4IEQse?sSYfMwUX0%f0xyP~KvM`~S_TnNZ_r+TLyMEY{=zEu-U89fM@5{7aG1)BW<(ul=kn2jKU|G7W(0Wbs zzoOC%7>qC$7UE^xXq&wlchcEgW^|@VzH7_@>?5PUE`6bAGa1vSe%`8#nbZEUyiS8( z&20%5Tk*J&BkeHuY2{DOM{-P~O`>1!&S|4m2L2=BRm!wxGJo&D2_f;wABN3m!s#7zWA#c-59fe~ruv+tSyb4&{115;?R|ZZ%ewiiWbK0G02FsDe-WS4)mH2H5FZs%tu`c`6 zF$I{IS{A{*nCE7M_%7+BY0#eqe_{K$mW-9*&X)w6%}1XVrVwWG$`F6q?t8{=@^%QV z8x2?-g~elwlrdwJk+CBx3=78*VL5b9H!FFa0ZXjRz%}ghU%wqSj(!0w1$G;j0xcqj zYu32}FFhO&3s@#U6fa=uTN%hD4aMRm?$a&J@KU_yQk{l=5-%>Lcw{TfByV12;N}o4 z-v&&%m4SW&7ShotZ+wyahx`sva{%#zwOSNjo-51Ay<+l1Kc|meg`-Ed+(n?XSbA|B zy5)j>w0+y_|Cc_x;QEN;khH=+8q)dt+`1neLaqbe^Y{$D8-*9FVX?N~5QP_mW{r^J zs1@4HA6GQIP$_PS=Y{cN&?MEOZ`G+V0Q>FsJq#GL|nzv^UuM{2qhm&`$?@bJI(>dILeza zDv$6q4f;5*wDhvPZZEx%M;yfV5oM`ZdKvNN$(-16^u!f+;vDfCAzl}Pr4?pJSn#bp z>VXVcIHnC)h?iJcIHnK(?UJZIg6=3+Uu%Z?s5MwxV|JXUiI+%N_C1>sf`#-P%j;Si z)13xi+l;@o21{$qPRa~c0So(se74(54_Lu_MIUiYFI-MeBmtM@9Y~QSkkeK5C8G8F(SDGw||I?a>fket+YN9IlZf&|>1;eaY3I zG~;zYmv&oYc9eHt8rd(3UL1$c<{Gq19K_NtWd_LOQSj~Vf8b}2qt=)mVW|vs7IOe` zLwb=i!z1W_a~^q}l*7ZA;rcR`hREX%-SbEkuWOBVTVr;l7wR`6#}Vfv11~Mj0i>bW zG5!9cMt#i`=DV@5IP>jAic86FU9=NxHGvoE4mpNj8d-yWsS|5k(nf3_5x&^<^k0r$ zuH!EZi|N|oBQi7VhZCb*lSIJM3b&)|Z;gUw&81)FIS#FZ9Q{x(`EV>O9MgyY_NOS? zU7B|t=CL)Pp`QawYut`H_uE3SaDH6UtrK+3b%5d7+?HsAu*8m|%?olV*ZoXbTH|(d z9YMNf9}yPPivbJis0BK02FvdLx1w(k{ajdD;db7y%<=n{cP_Cm)vwd5~JkoBg zoK0RAtMlzrVa;WqM)H>@ltTLxy}k^|b}!gA=InO5|NfQ9@%b{r8` zv1>K-8FflOAC?x_9bqx}t^o_jv;hmpc&waFSTJ8k(Mzwy@o3Xuem*QMushC;##+sQ zrS6ACkY8$Zxh`Sf#je$eyI5HKkIh9r5B&mInzK7Y-sLw9SlaLVy_IW5(o0KyL|*si z$^S<2I?_oq+51BD(gM39EV1;`xAJfZFO+ws?hd`C{}E=;YE&Odn&rG0o*OSnyDhLg z?oU%@iX2DWBVoT0FB~(m@Hsw@1oS z1}x1vOLJJL2O=yc(?P&s5^@c{8_QovFR^P_gHDW4=nh+kr3KE?92U|j=cJ}VZwuW6 zc`soZ`a15}jQIOM;-v-7VpJaPqttue6tFz;$1B91umMYa`U6q0a9)Uo&%lQfUH~r_ z)RCdQpk3mHeN?>WJjTy9K{tFCyC+OJrzQQ1Y+ZOvn_BLp7C1|Dye#_jUj<&aZ<|b+ zL9F@NAF=y+#LK`oE23~^;KK+nfR`3HOLJJhdnHxSF8K}hsnmV9Bug<3JSU337%&*& zg%DT4BSs=c6S>?BB3RDK&U7-1L|(j;l&o0}Vio?-j82lJ?BxMgOx z;H5?h$`P?^SOXtMDDVBG--VAHu@58gat8fbhl6N6Ztu zh8@@@jxu}H+?YA?Ao%W>2)T}U5!)nVCO8WUu=iM0SQu&G#{I=iK`;CU#|`COlj&*5 znZFf!s@O5je6jK__eZf01zIcN8mGnmBZ(Km>RN?`Jk7ufa4gnG)L{}9;w5(7$hAu> zuRA?v24stld3|nqMC|Lv_7S^5!ZLDF!DwYn3&esP;WaG3OT2Im3!NSK-M{ik8?o~s z$JRGDXGQUsHY>U}(=)W(M-(=1|6GyNo~1 zS^o#xl|yK(GJ14j?CvA`M9MF0FY!g6PfL6^b{!C@gBN?{ z#r6@(@Tn6Di${%d6c&Xm)MHY2DDgtR%Rb>6mbfy0u`)wTycl_P+(pbs5o4O4E0VB` z!3JnyOB;??9NiARLWbxg$|YwL$SXuU?T0t z(u)pDQ8D%foMW1Atq~SO_9jjU3)U7~bC5oBThe0^mRSDs3t%Z6H`Y-&ZcOaHCovb^ zz(h`3IC~qGSf@4rAv4iI=Ap<8w6ekW+w>5*vo`V!-m! z$Y-qNEBujuV&#L=wHEB#N83dj_%On7A4ym^rUhQcz#a!X<>Oo}St^C~mMjD2pIDe5Q8`15kS{hwgTFSgt17qQtNWz5&ax`?o_ zk0S9x+68{1`e+^Y_G9%@zo?JKw`Q?Qx$YqW%PR?A5953Uy0ub2N*F0e9Dm{dD7+9p zjR0dX9xi+8-GbV}qFwuXM>!MTmB;~n& zuY89++^=%K=(aQpFU(;p76(eE<`)(e*kL^jLklKH{DsG~A@4d4T^y2kNvE3^tdD|+ zd?;4dldy!xbSx}lZq#8Za*l;G!C z*m0vr+apySvUBl2ytXHA=Ng2ze&of5z0|ZX;r>42kF*=RH^KdB@>>Hx#yViT>yi-d z@_fM5F=H_?j*X((aMj`UG`~SusITK3Kz$JVEmp20&uK|__*3g?3Cpk}M$#mI;Qu%y_L`WdNEgkxd6aE@l1IZqq(LVEu3?{`PhF7w3NZjojq^$c&GjGh}g9|^oD!@*N<&M}Iw z7|>9Dkvb2KXMTr$^ib`if?fz;>^h$Ki&^iZGB3vw`KI8%gZnj?Uu@&XjGfe?J+p*G z?!(GGKEgs;NdSD`C9g zn}YAkd4}`P??EqVkjbAEa$fAZj4)q_*Kxi!_=~}J*+)XNE6z={hMcf|*Emy1dnrS| z%RY;x)0X7ASp9A+y|Cq@K_&(UT=S;Sl%6IQl+3@~a{0jW%Y`QfrWcnmt!REpd5PP| zFVie#B2i?w%!O-+Qh2GD$%2C>Ob|XG?DOZt1;!mEb4%vKXT(g)yt$Sc^X9rs7P;X+ z;!4D4MmWVlx#@Gpl(J$kx})POkXr#G)HfU;+kq7F~XjYy$EGuv3}&qTh*eum3=i!KM2&Y3>T}bp9kA z&3g70^V^(?t8nDF5KS^~QF0qE$Bpqf&3N|86u16tlHj5^SnlXPSD>s z=+E?o$G?O6bE14S9goSM+)l!mq`yzqpN;$${ke_)K0|-*s6RXOXS!bFUy=T7)Hh3i z#+?A-Z;}4oPJezp=J`ea+4Qi?5c__={yt8BuUB)SfNK=%0rO@n!fO1yk-u?sOBR*E zaSMjF;mYO4u$LR~yAt=9d7k+*N=g@?Sj6+}*yrnqFa@Jk=AS9who1HP;b)m&RBFnQ z>!|ZDTjldB2rY_?V~lLyj`%_NqdcaRKL1b53$Kg0!DKp~UszT$S8-YL=iPOe2aaqO z8)dG!>KcpU8dEr8tOe1mtFF;s==sOYE0wHp^gK(5Te)V>Et#$lAm`i#7?(3Gqo?0h z!lK5reXi%O$mj9X=XjXGc#rzQC`0VPROoSA=9O9sO74O?A> z{5s)BPn(_b>xv)TqQF;<$wj{J66;5x?p9 z-H9J57(9p4H=*O2}f9+C}>CJv1aXr~@FadG@QeLJ^G)PkXrk!HpL$RHM*fK7KN2WZRLaT#oCpzTI^Rd;7lzx& z#{2}9QT|oqXT|S0e*EJ_ycu}E5@FAXe7^g9_xo1)e&hR{?+?Bwe1Gx%)%U#bAHJ7- zulnBft@Ew-)%fas8-4Y@&AzR^?Y^D9-M+oP_kH_(ANmgXKJk5)cqsAn#KVbSBz~Fr zRpQr)T4H13k;FjaH;G3RzfC-rcznZg+ldV)Y~OA8&USLcN!#}uzPJ6b;RjpOh9=vo z4X13UpF91<=>cbEo_X%f7iR{Xoq6`TvtOJYaBk+g=gxg`ZovOT+?&8vQN91;mqo=b z$$js-WzD6Us+#LHw@6xrPZrKA%rAVja86-* zVQOJ=;lqWK3MUkfFN`XTC=4weS*R3Bg_gpA!Uqe76%Hx%FTB5SKw-Z^zrx;yJqx=R znyb53cd71N-Kn}`b%*Nq)$OX=R=25cUEQj>W%a$)zSS+H7TP`1Jz8_AxznG2TJa>35_ssB&^c>*X%=0IYk34pGEceLsNb!jG2=N%^(bJ=~hquQ~(-qTM z({a-Q(^k_O(;`!WDch80N+N%cF@=*w1ep9yekL<*|K+ROCw=+v;Yo)VAKrD22LI(~ z`2Tn``v3W`{b;*ttFrye_OtEZwx4X*Y?p1{+Ai6?v3+m*!FI*=UC?h8zXjc_xEb_E z#UDYxSNtAyqvA%;^@{63zgGMj^h?DrrtPL(rdLd_)8gQVP5VrTOiN8GDVRQET5sBH zT5VcuI%hghf%J^&E7RAe&rM&N-Z8yrdfRl&bkg*(>3!3OrFY8iEV)yBr|QnFJ16c` z-toH=aL4CP`#WiO3hsp8Nw`x=R=b2OxQeXx1X-?MO+bxLP5YX(ngZHSCZVR}uS0f=i`g(Oy^`2^58(V8zJ6l`Zy*6K4D_cuj7h7lBeYUQ)4z~8TPPUE}O@f+KG!1H6 z;S=Oj(Kx7a#XUjyRI~_cQPC`@Sw-`p=BA0JSkpAqWK$U3UdEZm(9I;r^pxpw(@fKJ zQ>N(=Q-8V@4We674_d;k58axqra;pOlS~Vd4W=8@0|_4C9t9q09_>ARJOVuYJSsg- zc--=+@+kIL;!);N>XATJTR;}vo~$*1EVt5h!gR}2Whyo;F_oE0O-T*R4K6h(X^`Y? z_P*p@;+@pU+~`uHl151l%?&R#ENQsMv&i$h=V?!WPhZb$<}=UPWHly-s`id--~0 zd&PLc`eFKp+1EAq|7PC*ujcDE{)>njIc#8F)xipXwBZgod=OvDeOrMiH zj87ET-ReihjSPtijsgk3{09|!$Kj+iCpS4Id&V3h#aBeF7CnQXdWqFX2b}3dYSVG! z>z`e7(cyl%Gh?z1B~k(OGrj@P-`K|eb1j+Ksz#321_O4832HD5EnMCS^++kHJ! zLk`&<{sag?=(!GR|)kK1RRysLY4R!*iYSpqohF$VAek zFFj($C5{$rZrn9LBs3CB{oFM_Mts3hE1#YiL#YuwRM$)2J-#3qg$MNjTA`VE7x#(>J1B} z)uV!mGjY_G%YVtotD!{v(KesI{xAyB5wkyB3kSSff=t-pQr$cFFqbR4`IXxzPBz;%qDo64V_R0B9yJQ>| z8XAI+CF;@WJ+kEcD>N?!SqK|yacM7 zjo_vj$*0I485Kh>jGXzkd#AUfmy4r!U?W3x%rBy93zX;^ z=|Z3`K8$o-ux{lHm(@$UrPpG?E!|}-RD;rMzvyzkxiaY0$q$bh9bQMc_0svLoj6|r zCPt5AwdnFPUfAg`&fMa0t#no;@k=k(#0$Q}sEClk9AN*MZfIEVM(uX=dP2)}>kYXJ zy&;MJnck4Zdgwt^_0iMQUA74hi4WHcM3-43ecS{JilK32V3DEpff3%#aQQI$G%enh z$60!Zsa_m?dr$L|omJhlLD!WrZX|sK=%mZ_Xr^5}y_lposqPi2-bivP_awbN_xC|a zFy8Bgq|QyBk?O)UZoo@$Xa3#Z3)Ox9Q}_K7@e!I3PlKS551ILT6r$3|cmsw+PZ$*$ zYM{`B7<%hJE?$o+Bk2ZZWQ0XVkBlEW#DMxphY8ZRQ=#-x0pf~#ji_MJP@GXGie3>r zxzIsk9bQD@KPr+F#DzK;&eh)+CgRO_a^{TGM0z!ynqjnIC=*i#oDIiO2n&r)r1#m8 zp?YFu^w@|*dNZDqlb)THm6<*R)uGtL>GYCob|Sr+o0U0-UTHbgQ&MNrUl>wT62;=y zxvq@#9D2Q(I3q1NGcz^Al|CyuJu`7eM)I8O#MA<3>5Qzb?8I!mnRAsi#-9cY+&_BT zo|-vhp0lcvoSHc+FRgAWz4N1%GE#HuX5?nm+d};>0J`~^XmUqlD0xaKq9d7wZXQ(0 zm5R|1nT$vy(+M6K6F(sqc0gqa=cUoA<0*+Gr{s*p8T_{zWa{!m2d5{`m@Qg^|G6mt z@7i;^yORUbJhhvNMbizYLcXuXckcX(`kmx|8*0{e^> z{Q9H|?9aH2^TQd(&lLGdj6-G#T)^0rCU6ns5~f$mxb&>pH=vAh!KVVBV7%rlfh!r` z{8Hd5#y+13e2eiC&i4ry{9mdR`Ry4OoEO-SanExC2QZ%cxxnF!Z*utr#x`y*$Vbpm znjp%j8TBU$Y-1eGxR~)U#-)sJ&JpFy828K&_ypt1Oo1yICuIv<#W;`a-(tLn^L-)& ze}3tre0##$6u5w~X@|f|7#}YexR~*Q zlLD7A9-s9}8T`xThv?730EB1ir<1;{kzv#)$rFy9I8~*mh80KgNp= z2^_%q(jI}s8Q-Lx2@#JH81FbDa2n%{Cj>5FT>Y-VOBnke7Py#k5!WweY~%W6j4yHh z6O3;vJG4_uY`6Z0cGTy^D+fU@5W_+Nxz}FdX z93ZgIIMKf=Jq0#1_UG~ejI(=){20b5Tt1EQlKvup3FFR8zm#!7KaqceaWgJo#W<4f z!xSy}`ROZBzCGi!9}4Wpm^QxD?J|f!Gr;Zl+X^bl`Fg^US znfDR-Z~K8@kD0se2l9Wj|BA7v2k88_Jv~t7zwPOPGI!h4gL-Ku0CxRgAAQh7IaRoZt_82;uN$j6Gs-m>FYV9vlITvF{F!7{=IF2S*xX?1O{D z#u)p!;3#4YTf$Mw82i!SC}Zr!_%vg0#+Mj3V0?=)_TRzb6EFI+n)}r355^}LdoiwL?8&%_@p`6bnke{V_D#NwJxWB1A7f9(L5#f^ zCouMAoXxla<0Xvgk4W^j0Dbqu7}q#T>fk+$4Skd`_GE>gHu4SsGx81pdr0)h87~+c z@xsj5h!_5hjd&2m*oX%)j1B)!V%&t=OJm%eaRK9d7%ySmf^jipGvhssyD>h&xI5!Z zjC(M?&bTLIQ-bJkFUIW|_h#(JxDVq1#(s>$8TVzJz}TO08e?ycH#Wv?%)0ta#f*n? z`8|vqaQPFA8#1n9+=#KyB*DKAV>9E%i~|@qVVuCYDPtSsW{gW28}Ye}u@Rq7FgET7 zm5h!1MHS=L+@D*F+c5T>Eck89*pIRPQ5lIOfU$nBCmh3A-!G1E8e@IWIKoR9V^1&~ zC5$l+z){8+`@!L;WQ;xGaNJ_7f6zwQcZ%Q-`^4e!W32B*M>w1@_Kw4m#@L(b*%&uq zTx{gG6y-~ee8v@wv9}nGO2!zA;JD5h;}IM_Qw4w62M&jsG4>k65x^K@6C5#&u@4-M zG{)F>42O*|#wj?88Dk$f9D5iyVqC!(d#d56WQ_gra9n4s@7G7z=V8IGf&Ca`zdam5 zb#M}6?1hJ;fHC&E!%@VzC*xAay%<+8?#{T9vA$;@)xXXdd;H<>ohJCh9&0%K7-OF` z96^k+&mE2=#@Oo)hs}vaelcV0!G>cGW9)l}m0wUV)6uh$tH_Ue-) z`e)dynXzH70gMfMjbUuqYZ_z2UTusGdo5;c=yMNaL!T!Y8~VJ&82c6CxW(AepKr3@ z*U+CIV`DrRz}OfMhBG$Cg9(hWKO~Mc#>V)tfUz+?T*BBG9~LvlzKS^ZFgC`ECm0*! z#Y)D;c=0-8W4vgZF8X7P7uz#7#*2Q8jqzd-V`ID+!&u*|llVzu?8D>9Y{rclFJWx# z@mS2*!%UUwC}r$v)}d(+V=u-PjJ+A3VC=*A663~cBD1Y;8)m5hz?VHIOze0YnoF+TK75&V0X2m*eL z8!!%H?6F7W$1wI}oW$6RaW-Rb#x};L3Q@n9u?OQlM*eA$e}b_W=U+1Nh5OLQ`hs6i z&Nnl@$1LgxF!o@2F-CdD*^IpyFJbJ>xRh}N#ubbkGQPyv!zS9h&R8J&cc$P^L|^(A znX$pXKV##0CA?1gggWK3>*Oz~lV4INzl^a#|8$-5RYrN{{}y9||GM*Il6*veOkBQ% zvC*Hp^IhuBZ>c+9rSANcy7Ou3&VQ*pU#0H+6rWkOKE0i zUs|Vr1!Hd}P|4VMzP!%3A?N#~3H}-}_G9eBIHsM*$9MTSvKjL<3R4l|rXt(4hcV_% z;5f|~-}B?R&KPqkaQL`I2L01@%2(CFrY?dXqkenFMty(A27fV(4gS&?8~oWA z8}?Sh*s!-U#)iF}W^CBob;d^je7Xw$jPa^-nsG5>qrY>q zGP8sy^1tl3xp}EMsct#OcoQGVxR*D^ow@lm-O|&OH%hT1pz~-af{)DCeGtvF*%^tYr5@V|+Vj4t;-;oSlxQQs|SO zOp@+n>6vrp5XPKkq(7ECHx*|b$r&?(Niun<#s^^{8R=2UvyIeX(guC4B+AF+WX+(N z#kDI?`MCUCn#`E;kMt0lFPM`x?;q(jm6GYYWf2{ui_d;?jjz^pKJn?9GXZ>OWaXwB z38J2JDkS)i$PF!^Pn<9ZK%YBq@K5y7g^?*Km>})yFQwxvI58tq(2JuvhncfbMBoVe zXpUwv&lPe@&d$rvNv*|}E>DqOi#@mWxV+??yjnOb+nrvV{-Ko{Uo?d^UjHV_O-#&B zz3GwsiIj^m@kycHQ(Z2xq^8uIu&kUp$$4@4+1WG!JT*lWqI{9dY#3GbdLzjRa`8D^ zy;TkRLM1WyaLK5x_fMq9rsn3)ab*a(3OT2{ilcv2GBrhk57iUg@|j;FUk?>-^@r*S zuJU5yv)(_W3Q??usfk*c=33XnM6nj8CTd}70yr~H|MF5d{p5_0)Qr@;R3i!c6W4n8 zsJuX;x1cYu=&cL$v~Op==&dVX^wxz%Z-L1k+?sI1dJ}F~Z^8|;{G9dmCfxIdeF@?* z8Oih9aa>+jwmXhZrRYs_(T)D;Zbb#0nCe3!21b2%Eb6=R_4;n*X?=_Q)KU2}>FZOL zyWnd==A*T8z<*|~azZ~w67(ak(K^}_C?q*A*&Vy|CGuVR64<3LfnECI@|-}=+i}Qtio%t?(xiz8dOJKbTvd64!d;lAkJOis#IPt_(`q0xgai8>%otl~w zJ(I+UdoPva?}(%D88Km!V_13y4Toykxse1pifi-&^#yXtfiXJamhY0Q$al$+`sqeO z@0S}1H>{Iz$A+9TL&-d5&pMnaxuz@DMX@a zoqjZ}I~YtW7BPP`+29{KL^(aZjt-F?H8O!F10_U6M$m$EiE*K{u%q5@F+GOn3(~Uu zp^?UnC0BnrKYkLH`_^YOv7HF{V0x2~pP1gF7eRY8?<>Tp0Q^8qG_B7)*htbFK>CAs zNgsZfbe^m;)JdG%A2o@lk}!jyJAsrxnpT)gbjv_GE&7kWD|lX(TRFE3lp|&ha(e%q z^xQH~PM?zGMh|m1jEcyoW$rM2CDzFt^DD~H+OQK`GDmqmon|qOr1?-rAD!u;=wf(E7n4G2t}FDvs9d&)@_N1K#L(DS zv0fT5$77BMuKpS6!DJT{qn!OV(lIYelotFN=@i|a0i5|rj1Ehzwc;^N-s0j$dx`q; zd6e#cJ0Sgv+krmWi{~BE4CV-9Q))^l_Ckr+IO?K4V~zO~=_G@?>9o9Xun4A9lIq7q z)4XoC`P(66hWaFa5Tg8vp^?#83eun(86B-p$u;n(3AEsyezOqe^;wowk8V%KEPb60 z!kTjiCgn%RM(8Up>rE4O&T)6n3>5V0ow!cr^?r-~Imv=wv}4RI1da>s|);N-haKT0#JK(JVBalYj8cr3&aQeQ-Ds(9x~nCpJdCJMRzj0k>$K>quaA~69apdDO6SoM z=eW}K@;v9%h`#Rq<9c;Uxawnc5kOPW$40PTm`|h+e$dFMQ{GKJq8y8@PP*$Yx~u*J zgM-7z8RB#+ucsU0tefs6!CCJE_C$tdg$os_0XYU6YFk=z|QJ! z{Xx33x?8%?Bc@c>)`KhE%{<-e8Tu79UGi~Hchz*|>!V72f_ClpbUh>*8LslW{OU>9 zGjf~^0n#c zj^rADyB??UAW8Ie2Y1WY9nuXOa@UinydggW8*(tPt3L)2QdBLz>!iCqMxvbavCr)> z66tPFi#k1LIrj`I=k~N%yPSIlm2-cL1bx2K3g!r-`Jsje2|L?!&!BYOP2I}5zxL4k z9YI?LP&wmyUw1IV`a2yu6I-FNWt6mrH}J54*fPBzp(0xJJui5-16NY&)myJ(@330_+ou*Dvu}Hx{qxrPuux~ zh=)hfpIR^GD4*8pqNiCNsuOm9y@mQAG%TeRXKF9R<(6LedCPc~!J^sDW#_3pJ*m^P zK5<9`<#FO|qPyJdt){n+wZ!nIVM0s@4XxcCLPUS?FeM(EUFO4bqUV`V*RvILM|_an zYo#X!N79-)Ji?~@I?KJFmR_$;daY`p`;Vn%xZXd~-D^@k@gS7wd~Rbrj&@1W+hxpa zS?S!kryJ`qi3}G#tYGEZlL7tW#juR$U3ctU=#0u41YHlmqW`thBg35S84cAfUn|{c zfaupscca7W&^zV8*eM5r<07MJt$KaQdT>DW+|p}3SG%Rxd4$8tMS}f0^+j6-UFSN1 zZcE9bJy*JGDY;tdE;e-f&hkiSLHwgU3!+xKSb9xgYObDiW2rg4C-vk<@=|nqej-Ig zMEpeBp_-n85zF)kXS@Z@%h8wMu3b)F)sDPpvYt%+&}-BB^pUilVWb--^Q89;kL8JS zVb1llv*>dfb4J!I^GsS%+qt0veLsXmCU4WKL3!{Pj##EeyX=sS~Ki(byz z|F{VhhsK4V^TtauS_>&FCzb2dU;Xvf+=)Sbmxf&NRgrmmYFhH#^sJl#=I)|=cl{H$ z37NDoQc4CbI)1kbX8MXGkGQv(yZ6c!m8dCN;|E`d44jdjKakeJ()p(q$W6Jqsrbv)w!>|B*W~#AEg4;S;F%!&GUwmfd)=zq`&@xTAskCDV{9*<^{>j%rpD@Ldkx|D+&C3&pIf1?-b5G&? zINFLs_dI7lr*J-f0i>&e)|ut{oMLgzmpGRp)oLYd;b(6 zzxuaNfgI_3HP?4|QR%t42p!3J^ta9F`SiDC-AneJcE%YRsco@e$WP$0HmG1?`gq>tR{ZxeKka>>T0ZRYgMnOS!) zpUa;p7r7s!DmMNqmtyeBWFaMjL_Bf$@vsggRoSXi5s=2@^FqgkmU8*#|Jd3QK zxKGcd&&HCSa;;NNC#sjEEBCVW-qTE5ML@i{6q|GN%#WqhvT+oB^3v%u8SEJ`%$=27 zvtO@#Qq8!~=yCt6iqv-;F%;%p0zmiC>AQD5Sgf0ey93?t2AD%~=8@!52AIR5M~Vyb znG9TskTnv!P|%WgWU{>?9vqf$HvEB_(eZSO2z1|b$w}Y0f`(X-bl%~@wKI4$w3zCQ}gou(RAd&%Iq^?hxu= z9#GT6zv<;M2Z*lq^2jre{|UW@REhWwLS4|NeYTvm>G~hEQSN_2|8DZSdt1CG0UB~1 z|C==Ekmkq!hhJ;TGk(5wZTv77&-l@$P6PWjwI@XsQ-|7<(2A)8?Hkj2hh#^^G?}lG zDpb;>y-J!GS=oZph*-kCRHh|ex1ux6BPwo7XJQCz`?RNhn2KrBsmd;NeIJ!I)2|!- zy3?-*rS(M1;;5wSgx*xP51naTUfGY%1L!=E$_=7xf1*Xtr^WQtT0E3~!zk?m%A>zO zRnjjZfX;z*roEjiX(xyT+6AJLG@CGz%8sII`beRDDE-3dH=2I*wMV7%ix0xYMtwg+ zb~qcd!`YA>&h^zZ(*9e0s$T1UIyZ}!uy$_q#y3-rlp%D-O3#~!5~wze_EomvLU49n z?iJBe`Ds^2<<0H=oO_4D*Umiq)QFegT|44e?}H=G@BeCq@P+J=m+ns`$;>Co*hn(A z`LKD)KZ0_CuK3q=U!hr4`VMAp!$kAUoUA!wT!?!n4l0$BLHo4fns%;B;m1uAMLimy znzNI0a#O`#lNNgL#W*7~)%|%K`(e_(o63d}Z5k};luV{s`VN;Frd~rHcwovj`C)n> z>MpLkKTIa&p58~K_j#Di$vs^pH+k69ohtM}rhC4gD?cn!X%EVJ_??rSfiO)YnyhSW zA*VCXuU(9ATVFl>T?gH?cqGj?0f>V)eWS|y#-3uIPucl0iRK&J<1C@5GxDXukp4f) zIxpxt40n3E3+eK8y-vcufr2=1s5drs9!lXAgL6;Pd8xT3yg}+3Hb9y3#t3E0hFGO= zce--1xlP$n^|I1&`$6Tv*$Dh@AMgt{o}D;E$$!2{e;;u9q2FWU+6B*SNQxBpACL) zGOp%x&mN+DLW)>daRB20Bi%T2{*D2nJngA&?0KWJV6<-$azH|Bv(8XzwG&b=y13=_TABBj0H60H>P${lGC44UBv%yapW1~Hz{}r6Re28ez$iEvuWRLR4f5a*6 zK0l>kPw%?&2nZB(g7|E-AI{jIZ?qr7>E71*+xO-4HGJ;X&_mg=eYDd^wLUk-47U4PLyed;K#&*!`O3;Bwbe8t$G z$>|@4eTIh!Ix&1UWNGm)r?lzOb3)bdOG!QxW|weqBSXEl=*VCjb1mbxNE2q{lkPTl#NV zY+1Fe%<@?0vlgV4XNF7L)0Rq;+iW44w!qgngvh3tV-!zaM={H%g3l-ToW^nqh!%27 z;Byk6^I}B$4nCjd^94Rv#fto!d~O{laA!Ur;4|%eN_R?qk8JU7iJr(aX~PD3GRiL) zW)_cxG$zvDV_`#B{XMEJaB7<^mQkHQ)BE12Bvble)gp;vg^WI~U$;))_r<$1#Y))} zWK#$$M?c)Ilw|y<(0FJ>m&qw39+k%g>2eO*7*<;*|Ff|q*S_iklR2TQ9bs8aVY# zyK%jyZteW_?Qu5qtWUy9V=fu%n0Qsb)@AkCuf{F!ajBx_=lMpmscyQr&aeCXk6H9S zH8^HMM2J4bp%GaIA$n}p1#b$WIjs8Mv*yqXK)slGW`5=j43G4EiVMts^yj1dv1PIT z=6WK%SElzc5g`~i-9IeX_!)n=!hXJb*5C&z&-lm4HJQuh5ETg;N+M(>eA zDfB+FR(`JxQvcL`*l#*HXGR)Eq=F^!eu(x`78&R_`ExG4HWvjt5@S8+S9@FR4&t+D=VmJAR&E9jwCQd2oaAi%Ew!@- zO1YOq0avE09q1K#`X3nZ&d^n;R(<@P0e=F`p~^7&%rn#FDWA;J z&%j7WKFXmy>Y+a9fF9^>JNfUxH!bCsE5A&%uDy8D`d;ZkX=S&?(wU2zH1F_V(tAI5 zmM8bK$jchW%IiN*mOVe3C13NKAwTnEyu8pR%PrnB%dH;rklRf;E;V^&nRLK6KstNh zSJu&eXIs-xowjt|=4ENoWtU|`c$77I{=3!&YyG4x|6U;d(YIWB?8NUr?A`NMEjeQhN1?gHq44zevNIcaYZ{eo*e26)jJn zo+JmoJWE!iQ{)?;PL$Ui36gDVddmG{8pvTke<*Dpy;>?dJxV&{d(FBs!e)I|{?Q^g z?_vqPf1Ty4(-!Lkqspu!_IH&mv5!e@&+e7ZfAh2SXoq%kbB_n)H`Y4G@PDSzy5)>9W3TO)V=VcD$pvsega*fja{*jaLZRI0qM z!6do!_rdbA34U_xh{ke{wP&P%`L2^5{UJ))u2E^YJvLHc??D|!24gXQnXkCkJ;e^~B$?=1NpEmeN|-pR6> z6)Ioz?5Wpq7viMuJ-j5}1*@z!?1<_^189<*bSeB;{)*{^1*{MCmuM|8R{oWD0JZ>|fNj7=U@Nd0*bZz6 zwgj7kZNbK1Yp^-k9&8Y{2%Cg$!bV}MuvyqHY#6o-n}%(}#$oHQdDuRD0KNd9fN#J@ z;4APM_zrvsz676wZ^6glYw$Vv9()kK2%m&+!bjn&@LBjSd>FnApN4P4$KmVndH6nJ z0Ac}R0%8MV1Y!kZ24V+d2x19h3StXl3}Ovp4q^{t5MmKx5@Hi#6k-)(7Gf7-7-AV> z8e$t_9AX_}9%3J2AYvh6B4Q(ABw{6ECSoUIC}JsMDq<^QEMhHUE@CfYFk&%cGGgY+a9fF9_st*R;i~Oo{dfcWrjCl$+@P0aR`*Gv=R3(g3TMle@)mh* zi{tVyXTOpYPW&K$=Xptf#^Z#%PuePvyP7X+QZKnh{@c>h&jO_K3+dL>?h|oeqY)+Bv^W6i_Kc~>!)QtA0Dtbx_6WP zfuPp*)gLahAKhoS+kPKmA1Jl8K9$l^n)%XJsYPi^Ii*vwJZ8Xp`Cr$M$cJZsDM#6U zkgxpwjr{Sk59PdGZ^&7LZF2V6`(^3qX{qsrDCy*x<<`Zea{@L#zt{f2^q1`)yx!G5 zuls!aGi~kmC)ZB0ONYFy0~a@zHXq(3{nhIpdDJgcq;vZk%T=c)%4tnsl%FeA<-YbxIs5wea`sE#$|Z3h z%SUeRl%q2j%gxsZ$oFiyBz@m5Me6$T>sIffX9L%1rS|W`-mo7$Kh%EVbh^Fm)VJ)P zdoQ$ac<-p?r!hCI$+jY?Npu6b;lA;5=-k!vuKaSjYt(sp|BCNrQ|uM_Sffwm56AD3 z`!!o4zqVYKeU4U1uW!$i%hIOhRlzj6$qJ%tGu!3_~nKOhar# zj6mdjcAo04cz-oeKLaBj`6!3- zsE7KX1A3s_tpDPG-sjrbFKoD9OZSdB=7MU@8Lhr> zWR(4#=`jI$`#tPSPIXr|Bp+A1{Hu$W^mcE}7Cc_va`-Xnav!Tav)L~B<=!Uco!{?M zcI_Uh_)qGkoJ?%2oEm;i-q1K%?*GhQse6O8z$c2^Ythg5(OUg}MLn7yul~AzioJWY z#sQPMUn~!r(@xdGHMRX;9ktz!`)Yrlx2fv2Y0@^IA@XO(O65^c{Vku%?5ebQY@jmN z)?3-Ls;RQ(sT1;8}xHxwo=ezP96r9MrdyGUDg}W&A2X#rxwHN|!sI z%6a8a$xnatl@$8-L~F-EKHAQ%1GFw4x7BCMpH$;o7Tf>+qgR>o`BUXT9Qn81K69&@ z#w%iV~@XBw&U?J<%M%E*rQ+Gs7AfsT_Oo?BPSPd{^6zWH_=rK)Lv{fBF$ArECx7Ijb;G(Zb9K^twLEwqWY!2@^! zPv8waf>-bi-q8p21${!_&`0zYeMa9Q1IPk0fovcn$O>xwP5;BEsA!EoIGKcJ; z1Ly)efo^mik*=UK=nguBE}>KC7CMHmp>yaSHUL|IO~5u_Bd`_N3~UEB1Y3el!M0#y zur=5mY!5aFTZB!*HesW%RoEJ^){UPrx_eBk&dY415PZ z1Yd$r!MEUJ@HO}xd=EYdUxZJ>H{ql3RroA?7d{MMhEKz{;p6ai_&j_cF#xduF#)jw zF#@pyF$1v!F$A#$F$J*&F$S>)F$b{+F$l2;F$u8=F$%E?F$=K^F$}Q`F%7W|F%Gc~ zF%Pj1F%Yp3F%hv5F%q#7F%z*9F%+>BF%_{DF&42FF&D8HF&MEJF&VKrUOHGE((gz|x!|Ls!k$ijEE@D7W#T@zMH_Xlp2k2Ptl4D=YU(EA_#42*Q-qa4bk9_oV* z=z(r_@`b?QqbDqBO?qhA#=2c78_^s-;r1{#hGsm=3FR#@anny@|yqC$VA8f9?5;#`Ta%L&v zLnkWRw|7ko?#eUr4`P3)arR{jT=Rck8ulC0^RL*RPc&|J>X9O5fit-DY*NWW4dZrGaM; z>ubZ$TXHVh)UAutw9XG7(GL9dnl@zcC)T%%^5ple-pcdehbT)PnyFO3J6UPn)&Blp-gm)yR#Ok5t}Sn5tBLI#sFY*k9>(?1a4frjI;$ ze{=18yW`rW_qJ-M?(3j^P!(q{_336k_E`g~{ixL zBNNKCBVG1sBX_@VDI5|ncZvC3KGafC_Af|LCLEZiOlmhsX>tA&`IWKlZYkTYV$i~*yk9Sl5)ig|d@uP#< zAMM}LvLBc14GKc!9z(9lzJ(U$?eQ~|tVfcRGu1A2}J%cAM6tqm%Dttb7x)s(FkE#lX`TAPPe?aME$ z>X*I`$S3Z-BER(hgG#~8Wc`P0q#+MwP!@Gi7c@W%G(j6}pe?kCw!s5<0Z-r!Jc3v7 z4BpWP^aXuF-_S?&6@5nEAp^()GJ$L$BghIegX|zf$PzMzY$0RF8Zw9Mp#$gwI)QGW zBj^e`gYKY1=n^`GZlPo78ajvWVFR!Q*aU0?HUe9L&A@hGL$D>-6l@DN23v#8!S-N- zutnG;Y!fyLTZPTSc45P?W!N-q8#WGGht0$G;REmm_yl|dJ_28X&%k%!L+~Z|6nqOl z2492E!S~>U@J09}d=owjUxm-Ycj3eEW%x9F8$J$ShtI?J5d#nl5EBp^5F-#P5Hk=v z5JM145K|Ca5MvN)5OWZF5Q7kl5R(v_5Tg*Q5VH`w5W^755YrIb5aST*5c3fG5Cahl z5fc#`5hD>R5i=1x5knD65mOOc5n~Z+5pxlH5rYwn5t9*{ixXPedj$Mw**4^i^`(dg z(v+m7_5mO5(;ghs)$y_ExK{D8pS*c)Yh~-k0_F3|Mfw>S>BvVplt(?(2OZD@-E~q! z`|}OW_V;T(u*81)zO~J!Mv}SDt7YG}+@`&i-`O$F^Sm}{cuV<}^ybRCjk${d$s*;> zv?mqoQ=OEKt%BsXV|QyeAGyzQI`gm=^|Ft8kHu4xr3=>F>;_h~skc3QMhp9!!~5AU zgzvQc)xW|zRcb7)9Wu@GZ1e_gfZWm1F1|`rU%4e+pWIOSEICsNUS6c6UAHOk7Is&D zz4ef+eO0VYX>WFXaP58VtC(mt@Km++gRibwujRD0zE$&Wxp&+4_Tm;p?4!D^vb-OC z$okr#CQ|yeZ!B$AKCjIxYUeoo_aEBKF{h-+jd$dnf2YyQts><>i-pSK%)ZLRf^7N8 zLpJU2A!bL3^_u7=i!QNt1&A&Xf ze!rZw#{OoK4u&RKk6#>B7PNn;J^6}c|I6=Kpym1sYv#>H(%h}Z)*d%TX?7K-_-3JX&bG$U_;FMIF=y4bTEj&_)|*3vHrp@Bm)G6L70J4BgAREXCvVzPYJID~SgiIk@$QZJQ%prT|0J?xqpd082x`NK2 zJLnL)gifJb=oq?&&Y^qQ0Biv^0o#C$z*b;0upQVCYza06+k%b3)?jn6J=h>@5jF|i zgpI;hVY9GZ*f4AvHVxZ`jl=gBwiJYd0SSm?vFYWzvq`h&{!)itLZhNQKJ`PxaG}pfJ^Kt6S zIltIv&iI!#xpJY@Wb?ss>%nM7D>OFdrF7n#5J8GYQaY?}CK5_OJTZgNAes88e zSN@6BVt!hRd-RTV#JrES2A!uk?hV!x@>OltX9L*pq+orvzipA*#m`YjJiJ|LJav=O=I9XR?_1wX;V*IKBspH8VE9AAm&QN~(tW;Utt3;Xlv7}r&(^B@iWpzxN9q4%NjeE2=r)EhV zJH|)@4^>&t&7Yzk_i3zVjA~OZ-S=Mk(5b!EvCYHOrw3L_rp%r+R6hLcU`MODL5^7hcYOOI;aa8paq(sjW*C0+C?gQokF+JF?0=`L-()&*aB<VfZq98omu5hp)ru;roaIhy{oVhz*Dlh!uz#h#iO_h$VeJm zh?R($h@FU`h^2_Bh^>gRh_#5hh`orxh{cG>h|OLPFHx&ME3~hQ zX(^5>uda@(-9M0(ookfumK;-X21YvaQ4Zx%5A{K()8vKrHJ2BvDKFo)Z{9jw>XN!% zTKwsC^}SJ39f9fojxG87H5^+u_=$4lz#gW?<`4hA{qOx+-NUHzQ$ zg?3a)ytY|6bK@^L=E!&2xy6qRb5->ep`8N*Q?5lzc*HHj5wg>M$C0g zTC_{*ZwdJ}^(!Q3G_0*i9j!luNj=v`klebUFQcBhyR+6XeP(0##D61wn z)~+6Y!qND<)0+HsvNU?lGg6x;OxC{HtJD=Oyws$NW7I|s3e-6RPg@^2xk1`o^t$!= zH~ToEpPS=IxYJZ_{OfcjFk4gNl|4#YXMZK?>O_0i$U?`0iXXKn4~&sI4qq-sta`vY z{^#e_7pC2-cF-jC((r}qj_keG!1n8;lCD2mS3lXw(e!ez^wrNPy5<=0dD zmEeC#%6m0GSp)k&;YbMbbnHIkFTHA6B~=ZWV;$0Yh5GN$?o%@#x?f%O-4b>8;uow} zm%S*>3T`buU44%uYF2^cVCMx=#I6WsQ{%VvAFh#xJd{CM)InX)04>l2ZM1>5&?edj z58wqnfj967UcobXM<37^^a*`KAJJFz8GVNgAPdL@vVn{sE65D8gA5@{$P}`Lj3H~t z9I}TFpbO{(x`B?ME9eZmgASof=oGqzj-hMl9J+@Mz!qQ=unpJRom*7+IE%+FG4L%3ogAc+N;gj%9_$Yi8J`3N455t$?)9`KhID8#G58p=&KrBE^ zKx{yaK&(K_KcLM%c|LTo~eLacg2-en(~wM7m7<8#a2 z?i-{#iv~!+4u8j-*9#p|k7aVepX-#XZ=Y9i21YvaQ4Zx%5A{I@pK7-8S!Ex3Y@<5p z_-MA2YJS;yRW2FcA1 zE>phV{h88e^fskD#Sj0H>Qmeq6d$s+l)W={En2GCFa;a`L%q`Qc9k9hbkD>G)SwNZ=ulol?L14qFpV8`R^c z+N-0i>jS^Ys3`xk*R$&A=US*=#-&Q%Cl^bN2fV9&(Q}z&|JR+RmwP>;d~x3=$`@D4 zl+|OKEBm{5cWm*^aonzy)JKYTNk3$LYxS7-qWa~Oe(JHt3j%%O9x0!lJ6{cZWtbXQ z5G%bov_wknuuV&txYW_RWK;R-?UR-A5vP=mjSeegR&-VZ);Ds@Z(8W+{LBgUueWze z!Kb~Yalfumy&6dB%X@WD0JZ>|&~1Zk1hxX3 zf$hMCU`wzm*cNOIwg#Jn?ZF0Ni?B)9CTtY83Y&%P!iHhXuxZ#fY#g=@n}_Yg2jC0v z3HSzl1ik{Ff$zYF;7jl+_!fK&z6PIz@4*M*i||SKCVUjW3ZI4V!iV9@@M-uqd>pL1&spFP(oLtnnC6vn)!6vTzfF+*Q+ zT(0?2`=BA;CrAhHTcR$H9Il8^z=%vP~Gp{UA9{sFJ={e`1@Ln<1Wt%i@9srr}9aMCm7?X&;-r!M_6yiDGlK?NZHzkL(9)o^vF>a!h-A=QO2k{I|;1+sBl@`+O^(oxjkre|>=C*L@45 z3)h!P?@L|Pguc(J+O{H^|0<4=UnkoqN^hzk|GTyI`rL!krr}=Jue}#J;x{&Qq%@9H zCcp5ta(L|r${ueorTUdTM~l=kjxS>qrTxBZrM%UZ_Sp{?so{;Uml^bSMEluqr@yW$ zKNnlV$L^N?=)cRVJn^_=+U`D%wsQj&^RO?KM!QZc?|ju-iF$LIHzGnzM+<}aJ=80i!0IMSq#veNRI z{=+rWkcToTi#n(a8U{VkMjL1gZK7@P0A9cocmt2%6+DA?^Z|WApU^k-(V&OELk5rq zWCGbhMvxU`2H8P|kR@aa*+RyUHDnIiLk9*u=mt81uAnpM4myM`p;PD5r`Ft8HgQ-A&4c2DTpnIF^DyYIfy-oL5M|&Nr+8|QHWJr z7ni6{dL1fDo_0jayObFC)zS6z&T4;oVTVo1-yKXNa0W&?@=*@uQ7@_O+~K{eUsPXe zzs|nugG162tCm?G+OWn^Fkq6_K6ACw?d=-ny=S*6uiZ?PVqe+fIQ7!A>YhpON*&9J zEZuLsp=PGEDc`19JEY?~J*7{_uW)QIpVVGm`>ZlM{f^S6bg%Mg`c>)i z)~`CwzT86FzW76_(!Yx};*Y)RsIT5EZxHmP+U8KO+N}I#>DD)a(%EK<9gFX4=@=V6 zPYD=QtsF~N6=~UUdE#$d9j5$5EqLcC>2hd+^`Yo8b^9O9?GLU`Q3F2CReQeqqEtR` zwsiHo#~hFR6yT^CH$!=%?VrkK?YOdc5wXJ?rZF_Z!O9)w_-)P- z$Cv)yl~HGYR00=%rMw({L+&H5cdQ?DkE83%V^WXbdrEIBs=9E}7xpJ+d8xno98|l{ z43c(#S}sLR?&*lmS?xIE*IcnLzM}tdjWpz;49cPo>VgJnfhK694YY+e(KdJhFW?Eh zfk*HPp20i%fWDwl=o|WozM{|QJ7fS^Kqin4WCU43W{@3Z2w6g=kS$~kSwrTKJ#+wF zKqt@*bOc>NXV4vV2wg&_&@FTfT|?*4J!}BB0Gohqz(!yzuo>76YzVdln}Th@#$ao( zIoKX-5Vi=Lgl)n`VXLrN*e+}swhWtwZNtW4>#%v)K70Va0H1(wz(?RK@EQ0HdM_s(K>VRt^FVs|T|f`BMu zAS$AQB4S{{&fGh8fZa*hEfzM)@4oz==lLgoAJ5sdyE8Z5?^hkbv<`s#?5^u^#L z+Pc>^7U1vycm55Fe%g;Rms$549yI6t1$u3Gd%b;dm>v)^)>!I5xxgyH$Bchmyy@53 z$$G;MrRdbKy|m?oXtrZ(r@!+po7ihvpDwUtmrB#bJGbbZTlMwqmaFwA#odg9j#~u2 zI(FXpro|)ibKx|-_~uA*dx7|Go#^3g(#kQc>eo+F%|1zLvH3YR?|2SL8=gzQm#L_C zqltQtf@a3U?aKttjk#qkFaGPG^}c=j5&sNrkNH`8byH0?Obuf@4n3FNJiTDb*nEtc z9gQV>;tS~AaPc$aF+25qxw^4xH?zQWwZK@kDO_<~en1atdRzQ|@fE7pIjqs#SXO!K zCF#TIO@=3KnXGjCW@K1K0nI&kiXVEiM?coAtg+*vAI4z~UKtYt4=A-dAJh{!wc(D- z?$9z_N~>LlY++j)?v#$&43R8e?q(-*x3O+uT{D6|UALc5p`Eko1LHZ%^cL-Wu+JOD4i z6YvH+0Tc-s3v%V;sg~9`>%L9FzL{3jICmM6$=frwu3h>dx=t z^y^z9jL&{J1vdJWVl-_E(*1mc_1fAaS~%%BiK%#*U7B{)fcYC|y^yA?N@az=4#-Vg zeW2{Htv-7BcKyY*DaMiS9Rq9iJY;M>#!YWmZLvOh$W6MgybJw4{5IQi{OsSa$LFs5 zBlW%!&-$&NsUBYVj<(zWkYCucPhXnS%lNISL*Ru0Cyc)7$M}q)EA@WkPtvoMWLj<2 z1GcTjzW=^njvE`nCI{Tp>}S28a!@Mo5R|1qdlz6-uh|72e|_0#S?VD>x?!Wf=Uh6q zzdMBPteVFre|P`C{1ZKd&zivQ)-tl{QTcR#?_oS5o9pV6s>VLqU+Z?$Mc5eYTiAta5{f%I{fG<74_1lbP{{yJcVnzn8}I z@n*{N+$SAT*c7z9;t_kaqU@u3Skp_2;c1yb zZRcm>?5uvupuw5?#fFt=!PXsgVCQpe+?t2~&9@1#W##T4VGb=a>ASa)6y-@>dK~1O)HKJD3{C~5}%+L#ZLT~61 zy`pFI4h(<=Fab8e2v`BLf9C^BUaz#bfc3vdE%z!A6tXaCLzm*5oKf@5$E z&cQu204+ch&;~RDtw1yX&WDzuDQF8CgVvxqXb&2M7NJRK6B>n9p;>4bYe37;G_(zk zL+j8yv=0x!3-AQI0gu2d@C>|z`S21v1#iJ)@ESY^@46PtMKB~2Z+h1d7fbwjTO# zcJ|VTJDVwvBbLfj+iqs>Z{)M=h%9=DeUZnGx~SXSuWEeHD+Pu$yJoDj&_lmfFhd{R z^%t#|-I5$zvX6One93~dlj-D*X7uyK^LoR?pUQDt=fFKN4~CpM(b^|;-O(jdxw6DMFz8;fv2?HXbimG3UGcp{uh#XTlP5l4HA_8X zod6y-@>dK~1O) zHKJD3jM~uydO=U<4Lzb)^o-tt0k8ljzy=rrD_{offFZC1roa{$18ZOo?7;!J04LxE z9Dyrv2JXNixCE!*794|Xa1QRF0cZi5fHt5JXa$;qcAz0>37UeopfP9-nuGSBL1+=0 zgf^j3Xcd};cA;TtdBxRltme`av}n;_-wHUkrkmrJtsCgELp-zm4LdBQs;K5eK~Qopm%4Qr_F zw5s%a&wKj#2`!BW!n^`UivQzkR$0?`-`K;g>%F4IpB^yNvUOU`;t$LrZWeWqokx3* zysaNOSKauexK?1V`p1m7tas|Ry}t54Hb3Z;ZYSBN@wc?*FP<{{=I!b5%Bi&Cvn#r1 z?H@|gBKN>=Tdx`AeJk`j_8z*NSz4*lYAZ|ZYR8)QzQwNAbEU=wIn>lfVCQR6R#tQi z>=OFKXn#}uoN8J-{mb>T${5#iEUipaHlW%mruNMx_V1rkzpttu(|xAmcF`s9S3;4o z{bVQIBWZ$ewbD}YC+5t-eF&>-x1Tk56iHkof6(1y)Aax+3#H|u3V}<9lnz|6K9pAv zj@0LFDW{wWYNeJNwv_dImB2oa{VuzlDx>Um+N7&FuSthIt3W*P8rN_SV=xwTFc)iJ zEv$*Pu?P0Tp4b~Tpcd4G+E62EMa`%kJ)jr#gx=62dPUFZ9T)%$U;=D_5wHSgzz!G! zOJE9Yf$?9g1?IpW9DoaO0&c(&xB_S34jh6@a0+h0F}Mcj;2s))7N7}e0~&!=pc!Zf z8iJOfDQF8CgVvxqXb&2M7NJRK6B>n9p;>4b8itk!9(=~)nh&BLH5buQlb`FMJ7*fB zb~OsbGv4Dm?ql4s;nn1*J=fT?KyTV&-#%(K;EDK*aTjBrO`|}cDX~Vs?58??TY>h- zUQS;R{>tK4Im&Z-G8U!0BTlim=oX7yJwf~q&_~iB@JaR#W4*U|`nmFn^4EFEw76?2 zUe*1xv?Vc_Ra+KI7W)>_iN#m-3DO_Mn)(HvaAU@WGp^~eR|;8^7@aoWZ_ayd-6~~_ zi)Qm{zLy<(SST$noz(ArJfh66RN$qwKXhsIU3)k1{v6R-n1|)R;DHr=Gg{4u5j)Eqz?26b~yJr6zbvtirHbEWcF+ zrA@0OedzLQ^ugw8fj7gx8_Ug!(6f0({erKV@_Fbdwyu(!Hn_DNTR|h4(O5w)Ub)Q%p|3wlCt=n=i5 zXY>vXfCVrCHoyp20W)9+41pyu1-8H#SOarl4-UWuH~}}{2wZ_Pa0d>-B{&7Q;22zk zb8rt0Knu_Wv;mDkE6@zI0}Vk-&=j-=Y}rs)uISZcgc* zWEzrMPFZ~0pxhol@bCF=c*c8N$9;^$c+A6mtb_HiZjA@CG^0yxw!v~E`x=wanzt@y z-{+lY&B%7mc>FU_T@z`aAaiAFjb7nWT#F#XKt|Mgofk^5$y@=k7_EQ2j^is~36=yr0 z8m8=N+)DX%-dP#Z<0x&swjsUrDMlXuBZXx;e`5}B-?0HL53nbzyRyAs(=_YL=4_xb zf;C)xg^g2xvKdn!va7Ph9Ik95pL;K%tuo%x=nZw1ei=O!`*p!e$fMy(%(gbl@G_MZ zPrEbpNh^gOTzOT#>$I7jDJfzhlRmKG^G8_GdQN8~)KT6X>aMi14p!)k5z5)$?UV#~Ue(p@t zFKGgO?D3E`SyfvZp4?Rl4<4o5x;aw0-mar^VqkT}Yt41KsAg{(mgPr&-e1nnWW8sr zt`)JIeMi~Y`D59{^sCy|e)-z!L!0*<|;4jHb#5fA%)eBY|blXCGt_1PV*M`j_|J?DL+5^6&cmEkluaQQrY$(SaGP` zNAWo3qLj*+OS^~eVU|2moOyJXPtDHYjm}NtU0)WmUyfGHu4jVeknbUT271T~RYglI zpTI6&Fz}!L8~LM@Q+(Pj6K}G-6R+-gl;rt8p_RoMf{)#TmE%YHDbus6Doam_&s!KG znCIRNeB+|Ce9rPi{L1cGyvEdGHt2R`RwH4Aw93s(?lIO&4tQQsJK(dDwR3OCKdfEP zE44exUBySlvd92l;Jb#zI^3oE8W5$L_b6qQ%RuGIT6blh=UTeDQA-xzV-4SV>x?~zLNHiMP9y*-svkx8`Oo|oFWJuy6&o#w&uCjMmi628vQhL_(i zvun?*8Aj&%%J;_9lP4r@R)fu^v6WUe`AFYYeE8?1e2MLGKJC{GZriq4PD?mJcieBJ zl-@EzacwbFIrGg&$#}DyZaLwkQ69ldrk>&sk2QWRDuR#f@5Jxz?#vF2UT&)1#80js z;wR_ql~m)5p=^4xEB`SpnunCq`ST|yc+%pR-N|HFs1rNN&HQd7( zjKv(x#Tr-(YhrEefxWON_C^h;1vQ~I)QDP9GipZ<=mkBYH}r^J(KC7n2EYQC02^Qg ztbiG?1BSp7m;zg146K1Uum=a=0-S&wa0ITv8Mp(7;1ZmITW}1n!8y2x2A~CK0@{E^ zpcQBa+JT0kC1?uTg2tdVXb#$g2BAf06551Dq1C^d721V{p=D?q+J?rVb!Z;ihX>#V zcmm#lN8lBB2Ht^(;3aqp-h#*AHFyr*g9qV7coN=(N8wd?7T$%2;bnLl-iF8Fb$A}$ zM+P7ZkO{~JWCXGTnSty;h9FCjDaaON46+89gX}>DA&Zbn$R=bIvI?1n>_Ubi%aCcv zHe?*K4w;ASLk1!Xk%`DgWF)c@nThN~h9XOmsmNAjEV34vi|j=PBa4yA$mSk@oXMdY z2gz;y9ckHeHu+NRH5<5A<@ZW#^owa_^;exoauyp&OPx3T&3`=OJ+9+E#$i0>VLsNu zdRTX_3zNp(wj#avr;{q@-VwVVQRG9fOYCL(0p6RG*C*Ar(l0ey$Y;AwrS)tZD>hq4 zD<_ObWqzrRbor)s{99fbJvZ7;?>_Vd&pBI$EBE@7!=>Mm17l1iZ<#wWPtTXmdi{~R z)Yw7tyxx%>q46Zfc!2dxPvfhaTj>vnme+r~ui%a)-RaEoeu``}TAX#$N-6BKo6f20 z%d4F;(@CDaKCoO4pLM~JZyh6%@R&DbNZ3(Qb96m2F~79De%dS9Vb&IM_}Lp0vp1Po zJQv?<#BbyG9LnikI@;=Qvo`SN5B+JgY%hhl1S>yVwO2xyYt*Bx9dB^qCx7{|f^HFU zl{a>&$>)7^AtU;{BJ2J+O`Y%z233xSmy2{Gty_WdovUGrUT}> z{cAg&+)LpFm+k2Dw(d&8(SMX1mpd!FV$Rd2Garg`NIvr~=N$Cwckl3=q=x+5+oy7B z@8_hX?0IsbY8&!7$X~vYd{Pem8B5kBzaR(fR5G)EE7rElYTmVGX?;&%1-)fx25*`5 zfK-dFqPUhFsSGL`q&yug{=ag6GCLjlhQ|zc)C0fe^PR(5@E>2}W%H$vN#)^J$lC(( z3;dnh%fI6?1rhjuYu;Bspi& z5|Sd$zU;B;JQ;EJq&BB0lus`8gZH<0)HifJ%Wt%9M4YCTSGLX^qST$*PkE*MpkqF7 z(zcu5=b6VH^`A@L^2%d|^Fv;_rVTyrk}Xy4k!cmila4nR$$5=e$uq{zA)|xyNTui3 zNXq%n+S$Y@yw{6Qyj8TL-gDwr?wZ_2j;?O57`G4n`@m~l!##|_Sj@p(tbw(#Cf3Ft z*b94NZ`6QVP!noHji?nhqjvOwUeFVILyzbcJ)?JE04#tBumMKE3YY;qU;2n4f zUV^9KEqDxGgXiEqco1HMC*e(a6kdgA;azwbUWTXPZFn4Bhv(saWB{@NnSg9SMj$JY z8ORP~2(kp3f^0#?AZw60$R1=6vIv=kY(hpMtB_g9E@T+844H;(L&hQNka@^HWFWE- znTTveMj|VbnaECLD6$lpifl#3B5RSk$X;YHvKX0+Z0=rU#}+pa(ri66!p4NqNlF;q z%&QU4P9`4c>!WYlZm+j;Jg?oKQ2lTI;~DR99rrN~<1r8Ou@2V5x86aObiuBv#G`gPuW`yt@AleR&siVArX8-R91R<-{5j*L^r)~>RvugF z;aCRv)5kSt-w|lEYqemv10Axw`po{Jn24aAbq(l zoW8HHokZOgUw411rGLn*qSv1;J~Ob@M)8RcR;p*#SMG&RC*}8)(FYx^jX{QmW7EqIOvTk=rVt{x00-+J_N@=q{r9kiG>*9T<#NFUq9OUD=)mViIr+Jh?d^Ggy!0or-wWm$i<^8u+mnUn%wxkHg@+X zObi?%@yH%#L4sYLEa$c)$0z*^5k*Ux6~#6 zj?~xvubSz@LoTyYZ@SZpvCHUd(Oa#62)S{wEn8`OQd_&~sn#^mjGbTONSt~$ppO2L zwCpZ#x-YINe;8Cj_vu(yZ&xRQ*ZnSj*WznGW%8VEiZUshT2J77Oo*Sp&{$T_`)0-m z#F9i?0#x>l-7>van%*7g53u|I+?18=2;+J^_=1$YA9fJfjJcn02qhu|f63f_Xp;5B#--h&6> zMR*e4gh%03coyD;hv8*-8s3J-;dOW(-bV%?3y=xO24n=X0-1sAK!zYokSWL(WDK$f znS<;>1|f@(NysK-6tW7Lh3rCxA_Y}33z3P)Mr0(i5}AqYM1~?u zk*Ua5WGu24nTza21|y4+$;jrUDPCItL8+|Wf$yyF!V78BpBTCz=^{;da+Y{?{mgeo z8ugjRZTzC=ABw;Kf@i$Pb==1|jK@68$2wRK>yGJMM?U=Ljha|3k&T-CixrTE>c!Q| zsOzxHv}i^d+OXDRUQhhF#VT!h;X@7$ zc3)3d4mu!Dn^(k)V-B#>w+3j={e0y7ifhzAN8?y>b}?()J4H*lG>2LTT%r4_)ug`T zu5yR!f%@S2m$_5ZOZ03|n5B>Z?G zi}zzJBRW#M+0aM!8g8y`>am=8TqtItoh;Z+=P@*-?iE_CTOjRBk8;w^s5@_b!bfHt zqW#W|R89|dSH2Fb&nLbJ&}Z~?&`Sl5QA3ZMpcA_7pvNcmC7IJ+Fv|_6*{&6-TG2Ky zxyZS1K<^v#m}k^4R<~1AcG;m1ZP(&5J@#n;{jevU4?j%x!<)WwX-fiqkvdFCA5vF2 z@ui5p@ob`38ChA6-CBdq_T<#O)gHROYz+Axna|SVF0ms6&S?%)J>(g)?4|48quIyG zKNzhrf~DlOqESmO(gmNV)44Y`@Nyxd{QwJnZL@{cZ}%YOEpM#M?-9+yw)*P_zE#(E z-ArH~HXor=O$Wtic=i*|pEsC?}KsOZ0WMJlXM)}OzT`T^01lyy7l^My4=P@()M;z z@W5+a!##|_Sj@p(tbw(#Cf3Ft*b94NZ`6QVP!noHji?nhqjvOwUeFVILyzbcJ)?JE z04#tBumMKE3YY;qUT*YmvFgUSu$`7@3T0 zc6+v27U#8*GrSGEy}cH9I2+CkXXnrro>{b$iw!H)(Ne$i`X2w99YHOI`YCwEdtAqT zjKg@$!+fl>_I)LSb;bE_syJgv7H16+v&hh%=F7 zaW;}koRK7pvy#ZZR_4sh(~X~fd5mSf52D6&oo1Cd5|?Yg`1Ds_#gW|&>B&XD%5=kF zYPlkdyM3|OjWzGHl_lvky}>GK5o^tAFRQ~V*)L6WJbc zUTf8~5+79Y9&__mX!n3)bZ6X3vVX&S9tMqoN+YZxElI8Alfn*-4wH?~-RHc=BXtRs1e< zmMqQ$lf~I!260B1B+d#WTF64R?QC-%Q>{F&GvX%+Y^~FWee2LlX{Y(N0rq-o+fZ%v zc{gR&Su@4x--*ZgyXcqWLU}`%<fu!oS=3p+?z*<-nYhw@W zg*~x1YCtWh3ALd{)QXx>J9l1hEkcvfCNv7ILbK2=Gz=|6)6h0F4y{A;&^|l>FTfM<20Q|tYMEWFs8kL+HGZF{|mUMdwvzh`gcBR`kbTeIcFZ$k|wX5%tC z=I~>_&Gdj@+gE}9iaJCWm+np08OMa$vc^iFaWefJKauwx9&qMS~ z!bv{2$`@|>ww|PIH_?AaoFn%%4?foMB>R$NO%l3Ul8lJvq}j|GnqOK~zLuwp@Bc#S z+WlMUfTC91PMp(Q>%>lWse`k!B0if=AsM{dh7x}AsVjNaL8bMVd?lMESLG`*Z?Qtl zkMh|DPQ+iLWbws!ruKmqxnJw^tXz!=R8w}*uoyR}&YB#YAUaaikv;o%m<=k{S1(llP9TM%IjIMwWVHNygH4e8%@@?BvqEG$~{s z4L*;Oogg2* z}ZxW%>Q1e^`9Y7W8c6L$u!PjVvM7T3?+wg0FHkQ}DoRT*Ez#!C1_} zT&#h$uqM{V9@qeLyf2vHKTU)fL_oOdP9%s6+NSOU;r$D39tc1zzUcF zJ75Sbfhn*B#=shw1AA})F2D)60Y~5poPj%V2rj`XxCO`H8k~cBXyC6FgeIU3Xarh; zW}qEt2wH-spe<+&T7%}GJ!lYGgeIX)XcSt7W}#hZ7+Qv=p>1d!T8HMLeRu#~fG6M$ zcm!U7XW$)p2wsAx;4OFzUW4c0J$MjageT!mcobfRXW?CV7+!{_;ca*vUWe!5ePjT# z0GWVnKt>=dkQvAhWC*eZnSyLV#vp5uImjMl5V8oFgls}aA**&bDv6+%)@-FgWp9wvi!9C@~aoA-{Cm> zWURuy8v9be&l&X9#acXZzKuRh8Y0P~Y857%)YtV5d;wj`uLc8Ieg;w&mvoJl2L?@oz6X$?EF&5I}J z6_VexOmti=!H>PI9+Z{93i7Keb3ZH)e~0oXzg2$+&wmv|jT4tqJ?bi(YHr0NZ1%}M z=PC+3_Nd~_EIDUwOS0|39G0-QE-!kmk-fS~*9Td!(woccCyPq+(!DAvU9N4Q_v*jn zSym=~yUt>|{K_hNw9bCkYqJA?Sa*V)?BhYiSzf9*(@UyUu`PKqxC>h=&QzbdFoL87 ztF&*Nqg>6(O8>PufPY!(pln@nfbQaX{H2=1_uUyqow_Dad0`auYFC9P{Cq0;F7PGd ztT9!bIVNrV)s~F9?ZJjpKknmNm-G+KqW1nBiSuv^{heb7FPmtsRR5GsZ?wM1mpk0& z#}nGpFXy*WLsT0U_qYakjM!*Wmo_2dEHqX8hmj#=RvU7t-+OJ6OFjO|DOO%u^)S8g z<1m??VWtnQ9>W`~EUkoJ%%}5Snz-Aum;BO&+Vp~V8Z~`=sD*X$=++jBF>s|?!2FNPdB4wY`*fSOUeApt4|aUyv8-$!x)Uk9L&WU zSPN@nZR~-)uqXCL4X6b*p*GZrT2V7VfjO`T2jBvnfE#cGuD}_%1Bc)eoPt|$46eaBxQ7Oy1!w}=fJUGdXa?GW zhM*;A3fh9kpfzX?+JgrFYEfts+Jr`-RcIF4g@&PJXd2pv#-Vj+9@>Wo;01UB-hfBo z6?g{TfrsEFcnaQv$KW-14&H+Y;YD~7-h@ZtRd^QOg@@r~cpBb@$KiE&9^OX=APbN& z$OdEtvI3cb>_CPfOOPqZ7Gw;v2APBGK?Wg+J)Tdc;VI6Lk zK2UD5(nMFDNY;!-TYX;L8Zz<^&v=jPxQ}rdk9ncBy$RMqZQ@KNRh+Fv98#=hZB|Ww zYPX`zYs}pZ#J5Kz5b{bvN^%1%8 z#9Xgo>CFSqx+>4s1k%;Ltn@zdHTjDLS#+jyoOCE#pVydT#s;5mNyHgh|E(v^&XR|d zukzDRR@{G761zBd8_oSynQFczytO#F_*!s9rM=}`I$yTXdt?Ri2zrR_aQs2qH?GHr z`1v!7A?=7b!|T8G#Mxf*tVRxGa{Cfib?zC~yf~h&N;A@JZ9nnBeWUoLcspfH(*)XZ zaS3-QSi~3p+Cz`OsZ1-k_vX&QL)ogn9f&w%EDL<#pE!F=9vE7SWO=+|8<)LcjYh=K zOM{2gT5ZH<1N@VD_PDajUdO}K<%q!t{>uv1V(AGqp(I#On{1a!lNm)NB*||$)O@i(Df%p(Qa>PoinU3*+_E)%e zQ2e0_@%Z~%T*Ez#!C1_}T&(ebtC^W$ZR~-)uqXCL4X6b*p*GZrT2V7meJE5y%Q;2C@Sgf-FI%AX|_z$Qoo0vIiN2EJ7wBn~+h+s+mjM zk%OB!%Uk@D{a(F}o~TlZwijpkRWFHR$UQvcJ+9+E#$i0>iSysGI)CU$*4*62YX2yx!VnAYk>{?ATOO|Vm}RXG?{u4tblFNT{JF!n=G?&!G z-jM`73THu8EAv$g=Fo}#M$tCp3t#HciodL0U71}pljP^v=p#B#B?q0;sC7~XJMi{B z8+fb<5oc#fvBq{JKd2we-r~VG9vV#dOo20Y{PqXj%@eHA6BVhLHW%vL| zJwn-04jzrKZ~!+WEDG?%`w0UxsRQQ<y+x+1m_L>4ZmU7+ zix6<>U!S*FmO}=e&7j|IujYAI3wWeiAsu~PqmJ%o`r}#6dGKnLZvEy?`j&X{ZDmHw zUq6*1?b68(;*ifElm@hQJb- z0$X4VtbsYO2M6E+oPZl}1g^jtxC4ja5}blta15@&Ik<-gpap0G+JHu&6=(+9frg+Z zXbReb#-KH54%&kTp+#sC+Jr`-RcIF4g@&PJXd2pv#-Vj+9@>Wo;01UB-hfBo6?g{T zfrsEFcnaQv$KW-14&H+Y;YD~7-h@ZtRd^QOJyO=1*bXQ(d5rVt1&6$7(|$43<3b^? zk>|+ae>~$ouH!z&VLav`kJ=S{l#A!u%SX4@=Sq?Vy%@KNb`Q_x<)eD>S|)epL-A%- zz11IHulXE0)~OvWGvALVTp6hKZS4AYen8G;InQUEJS51M*UQW%n;NE4cIF&6^oZmi zqpK-dhb=U>o)&uPIz4IKromLo@a9*W-P9WW@cui${jPL5_T*i8{a#PL_ewY!}PH*{9@{{&$7D1~EE!McSTRwFUfA6V~ zH5j^+t#s;4#Mx=8I77|!u3mFu`R)hvuOGzrlv1f>U3>n%pqLNr@rZ68l}gofR=P)> z((Fj^K6)Yc9Q!PtVo#@bCgSWiRh;3bmTYKGOsxu7($;sXbT#H)}T3P4;q9Pp-E^H8iiJ&S!fsYp=D?q+J?rV zb!Z;ihX>#Vcmm#lN8lBB2HwGZcnO|@x8N~&4W5Jd;6Zp1o`g5yQFs-eg?Gg{ZmKxX zjkMWg%VQeF%eCze(a~-v`L!#9{`w!!c#rG2k8zF41`^D}-r@`?Rh%V7s+>3Df$6<9 zw!lQknx*kkomTPbvF=KfYc9Ok!@GP@=x!Q8dy?P9mHC9J{zRNv_4oWXafX#D&axuz zBc8GAU;NmbI~olsy^^n3yO&QcbW{8XY+{LdZ~3JATj=j2`$^Ksn!IvJ6(Y{e`up{` zI716(X^~a4&at>=D_O^e8vTcil8SrYBT_tyL^ zi!;0a`+8ZN@uBz8({2i4oZl$sU${!z#?qpgFm++tejQkUSD{B6~*?-S}lhG4;LyzbcJ)?JE04#tB zumMKE3Yh&nA6NoYU<-_aH82PE-~e2J6L15Lz!f*x3O+uT{D6|UALc3T4T85^fZD<@?hvuPucmQ62 zC*Tcu1YUt>;2q3|m*6RQ3m${l;5m2?9)uU+Nq7?;g;(KOcz1L{D7zYRo*BQZw920- ze#my?{OXXG44dW24r}vK*sXL**@Ek&~26b^C9-)Zv_XtD=|)k`1BX4{DdQ; zb5E>i-|V)t-LDjq)3-$Xa>tgB?X-_Z_HpIiS6$*$+qx+~Iy!LE!IQl7ITKy|$G~2; zJjIGjwI{WkM`(84-MFokLi4U2Va3kRdBX+bdpC!0R&ez`&--zZ&YV3``#Smw8+W@4 z@d;_EhF%e$i{SCp>rH`{6Zn(c`iirCTzku#`FlQaTN=IaaGSj8h8cfo>PiAqE6K$p z{dn01k#u4m3v&Olx&C6lnc}mHlhlP~di0si)ZT9d84zd37u$9uAMYm1EBzbr{O42X z!^|wwShm*H-p}aMi25|&xtv~V@d`Sq4kxX{T=~K7fn;-Dp}a5HpYOTdm0n|x^j&3J zy?vqhJ@T3JX}cNa^@37U>7-ibw34AVzvfn-to3&xc3pjW-C`f{^SUAgL`NI zT7V{?4QK>ffo7l`Xb4(@rl2io3|fQcpgm|1T7)K{O=uKag=V2$Xc$_K{#ZdiaL$X{ z9Y~=y_EzQRPiFkpKc4X(*Kr@?8m*Zl4;i^rPPig|t~NfN=55Mg86Pim3&~ya+_I8? zX*q-&r2W*oM^!$w>k9Sivz_v+^uXnnU{FPSR z?{Ff?3tLP#iX4C1U7XK2J&2AvTSl+lEQOx7$}>D}e1r8Y-r7rREMmS{)kqXy zOPBAo(v7WFQ#|k**KiMGFcxz#7i(ZGtckU;2lm3A*c&yV7Sx2=P$OzZ&8QtcpcnLn z-q0g@MbGFR7yt`k0&IX0umWbl4j2MUUaz#bfc3vdE%z!A6tXW$MTf=h4; zZox6Q2It@&8h{p{31|ZvfmWayXa^dCmY^wU3mSvgpgCv{8iW?1NoW%qg;t?iXcroW zmWTW_nbe*&)CK*fsI#l>P{STwR$FElsztYctAz)@s)g@wt1mAnsjD;UskJMoXNGOB zDc#<;Nt#morc`mt7wM<-A8C2}57Ip4npEXss-#?*DNS^&Eyc7rZU{A}hNJfmnAWGb zsvlmCQ(N}iuBOhrsG0@5Qx}E)R_{FcrfSLe)Zw|w>dUld>f6qtS+7GYO9}Jir8zCG zNiAK9q^`;zX>8Ua*A+ zb%f1%)py++HQ)KSn)~Lvni80+-oBlx4vuNAwmN+)tGKhBlww#THE(xWn!Np!bg1he zDa`q^^#0Z@DR1Cj>DG%-sf7DUXIow|Nd3DTvTagK3uZc~)-{K#SI%u#eb=5-{hqv1 z`>iQf?VtQm7oN&jbMp;hz1WJTx8=;G2~So^rJG%l5-Wa`3fupY#t$u$7C79M zsyk;$Khl>-7P}frJ&JD|tiBE~>=~A5YWCem{d{4d8uB|qo$Yi+o#ydU4JiJlEOPjt+0B(YHrs{o#xlv^m5c^!?*=eQYpJ^>B6Mc;c&qy!Y7D;)S8Xr)#Fho)sXJb)$DG+)Ls$4)Zt-IRJ-nn z)GxaRtLF}em=d?-8(hnUOJP?|OJ)b&NjBepOHK5z(#L;trJA#jNYQen)Hjt%XA7Pi z;#{T}mMw@iovd%JE>?onp}}j_c|VV-izh!-2dw<5Zfa7jdg#y8xj!@2g+8OzdofX_ zX*|d9J#?{jY3>QB?Y%eB^4-6so>#s}h4b>IKkg=pny-)!Xf32)mhTOP8|NFs+D4hW zXP20|l?Zsc%gn4U(uu5;aMpHc8YdiCQI5GipZm`MUVNnj`mEG2=dB(RkP#*)BV z5|~Q@dvIV9T$ltWs^CTy9I1jURdA*X?o`2{D!5byr>fxABsew*t|h^_B)FG^1|*>c zNoYb6+K_}sB%u{aXhss+frd;%OD3TyRcK2U8dHVVRG~RlXipUyRD~8*p-EL}(HIkvdAPdNfp_oii{FxLElhCW~m~(RFPq-$TC%Ankupl85bb3P7;|XiR_a^ z21+6eC6S4e$VN$Iq$ILZ5}7H9>_mo|M3$OFrm7-aRgtl($XZoot}3!u6&b9GELKG( zt0J3`(al6wOCqx+k=>HWa7kpjBr;tR*)EBUmqgY}BJ(AY{f5OA-3$lDIc9Zm7uY(a ztChUmwCGM_wKn1FwAZJ1Y9khI)slxU(w?rg*TQ^bv&Mv!llg`@@~?m-d768we9${y z?)qthyy}CyT(0Dx^zfjabYn+wz=o$Trg^X2O%@UEhDA@8WmdfW+0?dUvYIublD0bG zAIF8qn=6Riv~BNdfV1E10}*)iUKZuWi_M>Q|Gpb`MR4v`y+isgBytyrEj6W1Kej z><;aNx?P*#zf3z4Rzth(c-Zth^_|2+C&+*LZ{OqChgC|9X6OTN6muI%6TlvMF) zZK?47<$x=m)~2AbUZ!Im>ln_E&CTAFTr@@duT^cn*lJc)25MVc#%jjeJG7enleO&g z5t>uCI$H9}U#52FbET+;qvi0E8|6Dmsj_eSCOLNfJUM!@zg&`dK^hy@Kw9Q!X4t&E zw5e*6w`u4eAH&e+_5n`Gn#n4Eg}T18mG+}^A8q$PE42aRQnUe)DO&$7QCgi}^|g^_ zJ=9qzE=W%^hsg~pB*?Wlq{>q)6XiRlLgfx!n#fL-Zb}R1P^qAitKp(+QC9S%x~6dx zd=05VT>=um?lO%#vP^xr&s;k&H%J>bXNA^qbF#Lt{SGZBbA`5ISu-teb{q9%tS03- z43OPg#mfaVQ{|E#TjcfrVe)5RN%qaim7Zs}m#T#|HFWI%C~Nr*UsJ@odWPo8l7P`a z;!Ov}FHldpnQ5bwJ8P2{M`;0B+co-5tY3DO_Vlfy<&_z$&LL^i>Q+7FDFfHZXGp5t zAu37E>$y~(P~Is282wCgnA}^6sL{i4QNNg#f2y9TQ$0U}@6p77Cc7g{w@yw{Yt;Xy zcFS(3OGyv=8~UDJn%X|Tr-J#su-h+v6`5piMg6sLlbLhVogn~ zt%^M)v6n3Nl*Qh%s6iIB$f71$)Fz1T+4!US#U244ah^+PNJ1;nOqS4& zNoWXK3J{ty32muDW2(@aCN!rB?P)@Tn$V&qG^q(~szRfZ(5fsnD+}$)Lc_AqvMe+$ z3vJ6nl@P;Zpq6)8Q!ZVuijwU>$2`_2FQ=0IWDm-QoUXz9A zWZ^wocu*Ezl!Yf{;Z0e1R1#i=XETL&;bDXDvO#z{OL$uq9#@6eHQ{+pcwZA4pouKd zL?&n=8&r`I29XuA$P8Izhb%Hg7Fi;TOp!&l$RcATku}Ji!y*B3o6Fv8u>gO=PYnvR4xstcfhvL?&w@n~~80BCBPQ*|NxPS!B2@ zvRoFKE{klJMaD}a>m`x-0V4ZN*9Pu2ES}LyYOx?pdR3>UG^AaST6bN4?cn4a+W93e ztkw)47XQbYapiz!HoB>4Ol+$BsGB2c7~(_Tq*Nw_H}1(!IiutWyQWI5RVUSRUYL5a zu!Fkcn`-KOX>?Ys?KVS`TU5GKFHEYo&|iA&+)(YkqKo#y?2^`_y)#?h*M~VQt;D8g zYTAO5a%$59iSoGF_M}lW9}>OWmDKirC}-B5D)-+QB^mt8)vh(e)T(lK_2>PwrnY-m zW(7K~GlV%elYYi5mKvWRQl^umdf`9|%{}6*w*RvOd+XrC3JR*QC*MwK-{y@_i?*+k zPtUd?S$Dlj)EYN(Ddf2vo3c=@GJUf&{?BvM`iYCx`Q7`d5hXWFll;@OvL{9w3M7B& zdrGKu=WAQ3DEg%-(XyGAX>nYu7-7#|r+Bjz2RF8$Lc_L)Fx}gVat#9+~D%%*pcXCceh)n>kmh&T`J*(oVOzpcYy!lqZ%cORgr>AuYE z#B|hgt{Q1GTD99#Y)Xr@Ftwi>WEjxNRT{Z>wv@GWgj98wr70%JSvxUqk9I;Y$GXn; zVs^Vcm`(C?EzQ?a`?|TO?DpojTwC`fNo8u0Z*hO*j7J+}W&A5?=4NM;v}A_*$$Y%p zu8oE2-M*4(S98U1yS0-vHgCGL{Y_8k=S1GFe@{eX?4sg^g;w=VKBN zgLo~8Ym&H!F#%$%D&}ZnE)#1ou@)0+Vr}dpi@jvAClPxSQ3DaRh^(`cMQs71Mpe|R zikekXyGit55WPsECrR{%9u1;bRrIWh-Zg;%6Id{T39tc1vcO6fm=S>;5f~DIr7SR& z1-1r(u_~}u1?H;29vm117Y4zJB)9=b2EmmoIMW1on&6NLE}7tz32wo$B)FCZ=R|N% zga(Mvf-E#43vC#LMpU5{RcJ;P+JS}wgq93KQ~!^>v+(LF>;69|cA|oqfZby8xo4k? zE!Z76c8~4Yj;+|DUR!KPtUfK>vs66{JaEWt8?X#(387*}9jfq4b?O$I#3 zf`v>7WW!{{LRJ(q!^jRJLmFAq$dpF5OvVJVM#!8*_9QYWkwro#3E8xeQH883WL6=& zCc_?N*+QlTvTZVMA?pg6XJnt@01X#tI6=b=#t{OpAUH$99TEj=)1aG!(&C0s~wBEgNu zkqWLnk^yCobh;c|l0 z32rxzS8%<8^A+6hWL%NxH0x9}v77IB(ZM$-HT+nH9zVz+D&JYeAEGPj$cgy*pXlkj zRIl>-YNI5lO19$i?X#)!M)v7acC3Lr*VogxO>xeN^QE}kti0T?UlOdY z@g1$-n!Z2jGLO!Ce6qg$Ia)6q9Hs|8iB_}w z2g@J6Q>15Pv@9D?S4Mu{MGuO25_kM4#`{j?W@=F>l==@DE4u$RhDR(4(K{bZ)U!*@)Gtbh>x8fuD)Y4La!ayFGTp8j z^4g}xGU(C)N_^MDO2GT|+q;GM{GHY6PTjMK{iC;AKBGrlHFE59?8HDPYu<1XT_zn} z>gSg$?*1^IM`46;j7l+3VurYw`Ar96M-94!MA z=Zgk&ffmJhLASqDs=XgBv?+Z_gsE?sssbnrasNNWDN5$&y zP21{zX~uHxgx3^YXtcalF;@QU*F|2g@`{$%ixJ71X5#?^L%7k3BWn5CX-;CrRaS<( zv#r2&8yq?|)QRvD%*- zRiyqi(O_sO9c=tjsPU<}lAB)7>pxg;O)*QiSlUZpT)mZR`y8UnAp>OAPq8wM*B|op zxD;~Tx(A|pD<7`?qC982a7%s2a@u*lWR~@C>oW6UK6mgn3*QrX4dJzfXB3{*SVLni zjWspaX6!-OOJYxny(P{daTaqXg|jivsBl(uW^;B^gQ>+qO%`essF6^ssac_RMh`T4 zq0tkK-Y|MZ=#@mzBzh;&Ly2CRo+|W~(PM>PEA-s--ps(v!of@|%tl~Fgjt!HDa?*B zLycK#%v58xj2RPVEirS6*-J1W!Gd8zfei*D3|17FG3*$I3`-7}vcQ%AV+7U=a|-M+ z7}Q`^Vu&%(oVc%rHWWhluEM!9>$$~WLqHPgshv) zJIFr60U9pQaDs*#j3WeGA>j-OcStxy!X?Hj3T|OIhT$3o=Xl^A;~)nva^NHn+$7*A zf~$P$r zaI1i039dEHwcuWcgEd^N;baXr8%JAkwS==J+%4g736~qEE4ZEEc!uj0obQ4At)91Q zI~Vs4Q*BesQ`2u}6HiNyp|*20-L7;?d`TCeKONYq$1J<68+$L;qid8@VRaVB1@G?2 zvpHEF-cnGeX&0x$iZNHbH<87?YO3YJ7?Ek!IC1{eKxnMXJ%N zGuEH;`_t13F0Ia&ks@ZK)%i=uYr1?_cZ|e)U$1#{9g307&fS(rO6`#sdX$s3yOvb( z|0HryyJ&9f4pb)triwFJCyQTgW2{O=(>ZZJz9ycxJE(vIOH@d$0an=5&J>j0rTS%x z)4)H!a+3}lboj!%dRpDBdbDpOzd1ii-t*j&*}ff+Uqlr-HpQjHHh=Hry^Ch^w6(L9 z?}%|CwotTqRAU`3DD-yT58j#Bv}aQ_wa9YSHffosTX=KYQd!f0h;T|@^$ss>w@UYa zc1PRScj{{Q=JBa=qhwN{n=fE*v6A`%ahh}Y-o(w;=h?26k5g|MjchdHnbC)zt0u7r(UuC8GA0#=f~xQ zLP4Y&cvh-wfvug&9R%f#O{B_W2UCr@Te#q*dHQ{&TRLjjUVWtVbKV=>Qu;2rEF+@M z%3V8q$QFSQMCayf*{9=bPW#}#`fE%r@qIPkGoJX`y1H~*Vo#b~zS;Q_s?p~aYFhs7 z&g8qr=-%<2)Z_dFdbeo~A8#I`yVts@XZ<*&Gxtub{riT?ss%5|v?(sizk3dqEm!BE zd25$(&hi_$+qqwA%jXc$R>g_wRtk|SZFFMQq)VZtCj_eIua~QNW8OFo`sAjy{kPG@ zZZj#q?J#blrsxXKujyPDkLyS0^XfTQ%F42yGje{BEAor?czNPbZTctK0&X*F3or4{ z$eA+wi&`a?iDz}Ph!xEu67k`|=L%m__@2UR2(LBI5T0eMp|O_6nr3aYhs0hIdrIsr zaRzf1#+evrW1P{#Sq084aP|b$;6W`4HJREJY80r|)J&+I(F2WMX!OMN#`H*{R}wvw z=$%9lO)nWeW%QQOV+*|&=(#}ecVY$}%)-G;%xn~9Brq$&%m}knn4!ijHD;YvA~J|GXm^{f*}uBa=?^fOMx)~)(FfI*i&FogGCJ{HP|$a z5?GaBR)Sp#h7HRMrWtHA825m60pn`|p&Tp;U&%oDQjfde#L zpy31!HyB3{Tp{5M33o_1#JGgv6oy+Ej&a}`0p|#~#{&mhaFGKi88<07O2AbFXA#^b z;4lrBX*f;8ZN_l~*GV`}!hI4BlyD)#i3~R~9O=N70?rh0r*WtSmpX8&ajSx31zbyT zF2TJ54%Tq7hLbhiY#c4%Y6)jcxLd;E5-wM8I>YS@#~arRIA6g17WrlpeT&9f_NRR+ z`N@hr@op2R)Y2=o@MNhcSuI76tsLv zfc6f4$j`O~IP#MNv4oWM5ORR1pb6DdO)kw&;y&8P9I?1GAXJUE@YxB3{( zDx6n({;X@&AG}pZh30X~bWGuf6pZBYMV`u(k-_%HTW95+eNE_d-)#CtwznLWGNr1p zOVa8i55=7f`J4}z1C$k=!MWcfnaH{9s`cgB5_P|R7&}>8s{(jiyYH+(ndkqt#8h4gZF}KUMrI>*Wo9ZuF*p^u5VG6TAxHn>II1> zJLgv6SBp6%CVjMec6no+37D>uyd)PoJzEXgx|uo$1<9e^eCg!TdHT;ZID(k3cIZqO)p6weos$vjh}haHV;zWQgwHR$6m2c7EdqY4>VSV z;>z*ImzP!PPcx|csl0OYr18}D?noURp2f|S+TUGKw3<%dZo3?EG067SU*)$QX=JV) z?>MS-CjD2pbbKODA(~n<8~I&sXGKp6Qh)D>a)N3dv39h~Dmu3;qiAC(t`qWJ1*RQC z`+nt?OOh?64Z&S?*yfDxuYerx;=)~Yio&a8XZ-v`DgR{ly6QnPqQzZ)H6^S5=XPN} zQzH*mb8?Yi_w`m%_dvC_=3M8{js&aR;{b6mg|8Cdi}3mysW|s<9qH`IoO0TT1S&nV zzP`IZtvfa$m%F3#Fd4~e~O>}g|fa|Xs)G|pts zMmQtktO93NIJ<)yOf3R6IjGIl$f%W2v#FiX1C3s|=!uKoX!J;;S2lWPqj#oMi^NU$c#jGOokX)(#VvHY-wbSkTn~b zvynZMK}HreGHJ3YkWoTb1u|>0>mb7xvTQQ#LAFiCP1Xf6Z?bP3z;JBj9A98Yk)alQlhtLybLi8FK3u(jY%e!JO?2Kx%zz9XyHrTkXQgSYN;;W?Fcnd5o5#LR(oD_eG& z?~T82Zc$0i9#=q|eDXNbL-#t6pzU-Pd_axPrR(Em;Nm2`uJ6H0)4ZLMS981h*5ukOuLJJi=N=C9(k_i9kG z*0rc@*NmQ%gW9WvKCQ&(gz2hwvf;erRTniiqpy6M-3n2UO8%m<)!}t#HKagCF?&;2mFm$T&QxiO zN}fBFJaxOO?3eun-x`_IbxYTBuhm_lcNBgg*Pp6uFL;&Q&XsGL=<8iy4@`N6v-}Z6 z!~3+Qo0E202PSk=n`(Cz{s|S-lNNn>c-H&MUH*kq`__~#*2i$ps#)EL+;!ZXzd5@9 z#?!J(!@Bk)mCpY7HH6mgucPg84>(oPv~+z~H!5^7rFfL;cZCmu&lSFAzQ=ftd9B1V zjAvb};bJX~H6_-zv4@Sl%$^#1n==TUg>WW;vniZW;H>z2<+kSRj2Z~FNYtcIn~NG< z)T&XlMC~?uV51j=o@n$&qelY0BJ@n4cM3fe=%s_6n%**cOz5@gxj^qVX5eBL8Z(iY zjg1-En3b8C#_Tj^C@@RHOa*4EFk^vPCt~Ji_6!CHEEpyTY-ljzf)&Gz1UohuvcZyJ zN`oy8#w@T#U`~KN1qKCJ^ngjjCWBD|tA<$uyBZ9;VA(J&!L|*?ZLn^b*I-{G1Bu82 zArk`GP{@ctRxD)3WQUO<{F`tslPN;BG&1HQYbJAq?AgemjVzi>YGhL*qb93_%nD>z zA;SV$wvcI)ZAQikSvQ#{WM9JpE?i)oKyZT%N7!(MafXIFG#p}FLU4+JTNE54;2I0g zG45eFh~OgQB!ZhX9Oc4Q##sXHvf(frE;CNkaGQqX6kJDe9>INT#pdoJW6Didi(nQ+&e^1{QVbx zo@*NI$lTZRZ#_|s2yqkJ?G|Esr;4KZWs9#4oyOC;CeXLb!{wb)C3uSnbw?ll!~LLo z>nr7Ld*<1m_Q0!a<-5hz^~O?Rdd9JxB6MdA?f>$`dYOKzO19Y7*%eVl*kvL`@|}fv z$Ko4s%30i@(`q@JC;E%^QN6{lPT4r@<~)wK{-peKhsu*Z4RLd% zcC?HvU=PVP(7sgdqV(PxsAajPdTFJ@p3(akP}_ulqH?Whb?m@6XCwQFT_Z<{?taPm ze$XQ36IJO;_&}L;MrYcPF}s^8-7wq%hxbjE&u+(G9c&*<_gog3i{DRFvaQb7Dp=jl zzL;FKP#l~xT@9PE(uuVnS?^X(5J69GtAV!`^YOeHsLF4BWNg%CYMddx8`NT$yL-_G zxHyfyec@2s`?{A+A@_Lw>#jQ3cZaH7G>%d=bH#>KQ`P%Z2ONA@_*~#?=6j6S2)tI} z8N#zJ)^M?wSyN(d8++K;i?OH1-i$L4&LVIog|j(0qlL2yoY|b6QG-A&rY4EnG-`BF ztEpL{b{jpg(F;aTGOgdnb!KebOhFJ-AH5himvSC_+Z5xc+VBIjU!M@1=Aq#{| zC}hKA#DlB|WX3^u7#UK?lF5`rwlp&4B5Njd64|qnK^s{#nbgRp$tWSKgv=^r*JM~B z%L18BK(-kfXJp-EULyM%4shWD;{?1HyqgV2*l>k$hK4(gLkKP*IK_cm{&fsoBj6kh z?qN8H;UeQC2{&mt%7v?pvk308;V>I6GfvZRn}*{Et|K_lf&0{r$16RpKCKr0KMYc> zdMQ49BPI3w5G$V~YbYl6Yw6DDJKgOwyc{>{KG~l63hzIz=0)zIIXd~FI=uBP)5l$F zM0mRO>ho#ef8Wn%?i6_bW0`o9wxG&Q2^`UCs#x(OS~eTin*OX+*L}5Prh6+gC4PU_ zczf`MKkNzzmr?6x^K_$~Q`oNx)0DR7#f2a1)s|h6|E_1=-!!51LJ>c4yEDAwHs)au zJ^MaSmY2g_$~mW^JE{CEw^r(Q`eB_B_Pt3X?BSG5^7MJS*W#_beNiHHi}0drbJwZJ zQ?veCZ*-$raqjAZ#4njPaZGR>RWaFkIq9jl?9nsCJ^6aJd#BuD{pnF(d$%>-zI-iI z=4?J!@2+`~JM7+0wV!3D=Sxt)C_SyV4o-Wu3v6&KfM)t|kF%5g37$(hfB z-RP%tT>I-Govdg_d)B&1w*Ro+^4^kJ_}ztHxo+$xI(xM=HG3GRo|k$2-+H%S3>S^g zp0XBgT*Pe~=intByUXprRgy6!vbwK>=DKs||D!$mo7k}vrrFIN&XPA8&(Ou{X4XT0 zte}dgBdBzh*(xqa+J9Lw{cBpWtH^|((P;lBh64uG;6_0$Wx6MkvT$7=x7VUMZjHz3 z+;UH=+J7CLVGm1+$M3M2tbePRUpIL>mv)V5N3EkLs#ZmV|66ZMTmvyQcZ3+$cOp+- z)r$|_ijW_^^^sYQJk$K!Y}ZpZ(7l1Xl#h3dwYvtKl4(wj(H$;V&>>wWQPPURl&4j1 zm2#l<-+K65;A;ZkW4wm(TJwy=vl?rdwal6}*0!;S*-K+jjlBtHAe=?vO#iKivkIJ9 z;OvYV7`2$1Bx=*B(bQ^cwo$u{9@yxGMo%<)L+BBqR|-A*Z$0!B0>ShT>T0GozU2CD>SCD_$q*agdmX$iJ%Fm8i& z-0?SFgMEPv5VGJwCjMIwS+S5Af$W$JF|tI+lti{PGUg&{CUX+mvynj?S!85VBb$lH zC?TsBGW*|p$g+h@3uId% zj4nv?Hf*4t9mgoY=2g|OMSH}8tnGOD*=>CGY-@S5L6p30mva9u9Pb{QK0`mx8E2>3 zGTuJeyB|lcU8Wm8IwrCfOQ6HvbyT4O?bXmyhs2D|m3jQFy_}+S4f%9QtejO2?>{>p z?`A4}SZ^sg*M8b-nmzx(PG?E0wfgd&*VgaN_tE*B=~bf@Bh~lfM?{&o!TjgAlbpw^ zq%1TkPPPt8?bhrR??&SH(Y>w_ZMR%J%kKYs6H2~vlm0fJ)ahr($!<8=Ntq*BmA`*T zbPx35l23q@at0CjaFVB zskTiwo7aL1R=!Fvho7*@eORmLCX2e==BpKjZ}JOqlm>QZ@NtkG*i&k4O(n1R47EX;&48-W=~%!)BH7qc@n zl$fQBncA4G#*8&)O_(`h_J#og76h1JuwfXHV8sG6F4!>)Nw8#tDI08QFs8v8fjI(u zhCu-q4U-Hu6&RIZmB6eEb`8T4EZblj?_G=1U|fTB0`mm+O$G$AAdm@0HcUn&vO>s= zi|m*TNo2`Jrfg(OBV!s_BV>+{J(EF!EDB_jkxfQMC9*1!Sr^$g875@eMy73KTO;Ed zStn$kkbO1n;{h?D?^LxV86)gd`;^qEq(fS;hKQp?{%#-fu zbKCVc?m-%Yoqj@5##iRn)k@hDox#|-T(Lbd8=Z@oQ6@>loFr0%BkhFuj5IX z;pj`fw8sf|NaN2s*^*s$uh3|_+{*g;!MYe7k#L5xhBc$6eI6^^eIah-A0;{^<`J2C z{ljCbG@|s=Ps`p5_UOqkj=Ha(=5hV6ZMKVVoo`2_3eY`2F43)eJLDz}r*ZintJZ}N zCZ17|VtAU~;zgPVymHJb(aPtvYhGa1>9Oi8G^5>yK0FOUM#b?RBwl<_Vh5nIkrtDtve*W$A9I}&&qum z`=`6};Z(cbp6zzyvXy99<=y&RR0-<%dKb-Dd{m{_a?`w;awumsCCn6|;T2ICCY3Cvqy|KI141%XU3vcbrR zL{=m+<03mILlRlS`)3Q;$d<{NM%M6qD6

@89Q4o(v_gOLfz-MleKY-o_zLfKiF6h{E)x)x@>K~fZsT^>x+KX=DB;T z@&p}_>5+ZwR8u?U@H_es_Yx1QpH8}mqf~`Ob^d++$1BTn_k9yNPM_ucLE9APelDwY z-KTT*eCqlo+|w-QRwg@1iailS%Ij$t;(yE~wt+8}{$><_?M6^^;SLF3daM zSLO=UAIistr|EAyAG(p5a=1-@UA3QWoMg|Pb3nH%SV0%^&MHe*4|giX&;Iv$^XI7{ zeNs^6%=o+LGc$Pd!kco-<5Id+qdV^9$g1x2wP)-Br{>y=)mHs3Yb$+yOjhX?yxMv{ zXXAg*ubb^dTz48@PoBuP`kj-5ZY;vzPh4{&uXK0&k2+{~?6}JQd-7cE*J+F%IM`RV ztK3-(Te0`Q=QCyZruKo|xWoIayf65m+~M6^jD305^;UA8FEZd2(m`&7n$I?d@> zx_5kfDNpVbZ3XqKZ=x-Esk68o;Ro1C7+k5=KyE9Dv_*~#?jPIG(NW50!8S|`J!^T=R)--Et>_OOzu;+jK z<17MaQaGDAqr_Py&TP(ZYOqm@jhYl{)2PwZN~oF5-sXSkg+NafdSiMd(JP6bnckTm z+UTW?o)UVi(PPtVLeKwu9D z1embEhG9g46$xexJBA?}EZJa6f-Mck3~L1D80-miey}LOqyU?SQ3+Nhn03LfVOWA? z8%#^Et--iqoxr>T`~UtoFR~zz34v^wj1aOSkr@}+F&UD`l8sDBWJ@Ds4zfnboI>{g zeI8j9$fQ6vO-2b>mB_4%?3xS{vTP&MHnOdeaYoh&nK#*YLbk{9*pIuoNMCQ;3Ou9# zE}b&zQphzP*E(fby^U$?%EME*@9{Hn9d>RdG0TsaeCy5?;_tJs{3J^!MeC^-e3E`O zT&ZU_Oc7T1LJ522lvM7^>M7`cw-fYNNC2;iD9bGt`{=pjpU8u219gg~$&v=uPw9S6 znLMoix`y_suBqH=J*Ovj%J-N;g0geu$giqO?X3E4*(=grP?~Fw`{8y-O>UYWKkcUO zKzrnUAGc+lT%3Qtm+bV+mxpzluQGhgqu(7mAotO5TGZ;jyXr(wH)!AodsL(8_V#VR z^yj-v`9jz9a#x|$e7n_KXY!>2dIcEq+7u|OwtMQ*)M)qfn5XuScT4P@bzkfAci!`z zrT+5J_qQrGSz#+Ca}hmb@&frR<6tS0Zn~Ftta2NP8}_BN@%H@RZ|LWq!n(uXdF9jg zC)D+5OFaIku&%vftW0%qx$Lpwv|FZ_<0kNN`{r+Z?DIylU>9_j|$e`j26+Q$$ zH(!(Zp2Ta+Yt1t@p0%-tSxaM0iM18>5ZKG?DY3W28O&MCnQWZR#u?37HO?$?b_X>G z)M9EP)Fx4*snyhMqjucmi@)cG+t3q<-dN}np;xA7gx*Q?(Dc&u)JAV@^qA3Wjh;*N zUSI}rg zoMn~uahTMRx30;zN4$A_)~rcc>L1WfvVgED!(Pdt;Pmd&OMbF)NCrBy^tOswiodHI zUQrjIy|Q+oOE>0aOd2{M*qt%oKg_#lkbT4}t4o=FQj^^E=t0QHiZou5EVb>niw#UxN?za4Nh-#LZOtI}Va@wFT;%8k;_nSRMUj498 z?tkr_l(%ZMyXkAjuzA6Q?O`!F+*b3))0Qh6sno@sTxyRmok|{}XU=FPH+()Q-)DI5 z)-Sce?RP45*vum_cHj5__v@6uMgQHWXxSeHc+9XM%JQ;+ZhW?Y3_bcpZvOM08=mWc z`+I11C)0ff3IJ!_#>KdJ0=Q?+rp2a7#y#}6fv+lX>ZoK-B z{k5jH2lUF|=D9YQ{d%O96Ka=Wd=Ng@_!{AR<~8QE<{9&>jWt}X#aL5fZN?siy%>86 z>}}%=<}67#lZ~_C_i#TkXVo~f#Mv1&5Ncu6q)?lU8cnT9sM$vCHhN%sq0tkG-Y|M( zdd27&qjxrXXnJXSYNNMd=&|XwM$aXBuP_5M3&u}@b$STIc3U?U8SFj&!GMuHs$h6Gq*Fr~qk4aN*>hB*oL!oVPbMGYn; z*mS_C0ILejYOrgAVZ*XvT7vB`FfPHm2J;f^Ta!u!Q9`nYdO!XdqtwDfw6<2kr2U(7 z={o-u2}_^5DV^wfQ&+3pOb%|Hg2&`5=}bCWmc~Sd>zb1mOF6xV{O~j|Dc|5H`b1K( zu+(E($w_m+>OxDJ$wyuXRlV;=oaUXOW6>E@PkE!sC7UxcB2R=)gWVK)C26QbDmhED7`=<_a+t(~F zug~o%3g%j(5@vX)z{=#hPU_#OS~-9FNRQ9%m3K$n(cyW+GG7{EpFdOBoij4G^a=YR zo|ZqPUPcus-?F#(=GoTPob&j%?OJ!;8uuQ$$4dE!9o{?Fo_emhJHF6&$~L_wIfGxS z=~;5qxMe$eVm=R7&tKHOaqXzvrmI)dk&yIZJ1586>)MrYi8P-puFU8X`KFsHg zuQ9%7<25c`n}lb=@T`qBT&!i*B&^NYLtrn)o{YV1oWYzW31>2AvvEcjXLWF9!r2)$ z2-KoblSXYeYBaSbp=MLNjUKq@1*0btyGqW+fFwD@*Qe&nPvt`U!VAcXN*Ov~||;UGJw}TuY&T4BqN2&*&}s5Aqi$l0UHKCV#stW_ERz|N9Mf@o^FUu(Kgg z9ow7((v;&=*Dt6!=>weY{@X>-hlQzn`X)qfQ##VTEbZ&?PSk(YS3I7a+-l$IkaO!n zHnlxVYL)DtolXs}A6EEye=+#|3yYqA2|X1Rs)7q$R3{e|!sfc=5|D>8J^YQ!U^?1Vf7Q8A!aMeGas?eZqPNTz%#DzV9 zl!vNv>bNYbVNiNC>-awBX6Rch?xUZ$`2M?< z?&CR6w{*GG=%ELdIFXm%4ywZihDUO-^ETJ}=bcJF_`dVw@eEOVXfA4>qds*U+Jb(5 zB|723|KGQqAdSqw@LiYd61g7W5W=51Qi~r)>sjB5KX!&>+@kj8&BlIyHF(RkgP#VBbLoEM!3-69U<=kP!!2QOFDh87P2OgIYRab86;$pkV%1T z3S=}9S#^+Eh3q=Wu!SrOWLhBG7BcQ2>k64y$UegX3>Pq*z;J_cgaua!ID_C0fzHs$0owH3eHtu@V! z!zZ<=>O_9fb33=Gw~^<*Xv`y5UQhfzA%Z$xSV!IBc2K9HQ)yW96tr=6GUxI1qiVyA z?`rPFV=Aa+q*|D^jnnYODNn9B!B(VC7120ok7%0aoA^nW#r^J%HGjtgRj$%FZk=Kq zkDR`lyIpF-gC4GOE{EEbD{u`xn7fm@<7b(#U(ZOb_ng`F{PAAZx9|_8-ker36*{Z7 z$3{45e>k3%_fuHQ=T#8HW0g2J<%@V#{ie9k_KlVP{5kcc$_ReaJ)RrIY-Qixzw`9| zsnxqbLa2C|mDIPzF1oNFmh!g^pcj4Kc%qb}j;HvcR@}Lut`+a6mc5walwY;Nv!dV? zk5^jjFWyjw*~ zzYij2|0Ci5u$0)-eX}B~Cx2P6iO)RP#yu8|;6jH6slIi7BFqMtVR{8hh~r{SO3#F?t=#mHN4#VqT&7(2VB z$n|ES$~&MVXX(0u11jv`W!c8_anD?pb89;4=C^>xRZpPn&SFZ(<>|}=ZxQn)PE~mG zMV;?`S4|F`s@!G=oe}ABczkAO^=!YNMx<-DQtbTvk62agAJH9u7O1jelA1TUCAUky zj+@ll$%{5m;!c<1)qtP4@3Yn%x{^16hMrhTZG9`!f<6Vr(v7p!q;H?pnqd!BkMJ0k ztJM`}dsx#FXi&)QE;0*?%?12Jhn4S*P>3 zGRIZdst-idnlbb(X%|K9TtQ2lL{P!$5u(iHNh-_K52{4fr>c09dFsx)XU-_E$O`z_ zh0iT~P2hV1uQ9I`ct+t_#u|*Z7;7@tR@g&eFT$RLy$NR^oW-0;;cNmXz%#<-(Gh=~S6J}1BJ%IrN3x){=HWV09 zU`2r$1$Gj_P$F2ez?1-60*nc;CcvBn_81H@SY$BCVAC)vz$%#8Mqrn~Fo9*mv;x}- zj4QCNz`O$ciO4`AvS1+-0@)DAh(J~ZGUFgSj0`cd#K;sQTP9-yStDeQkUc^M30X9m zRLG`6MisKEkXeQ7CL+U$$g+h@3uId$;{sV1$b2HQ&u{?41^D}?l?*o+M+mrr;0%I0 z2o52*#5l!)TNE6F_r)m%=P0fNKSuYr(w?2QysEa5BTq z#?c_OaN~rH%jnxLZJhA$N^CDnJduoto3N95VSnEl#LGrQ+ACmfnN-cI|#VV81uNnnzATg=(UC zwu+)lM4UB#VL>%2RWsFTPLQ+V!hTWx;BT})bS(AVl8$ zAXR+8VwyMITkg*Hlqz?Kq@B&Ds%9Vh^8QT&dG^gT{OV}5b0^#uBf_hRw$nCRDG%mV zTMD;Of5i84;va7pO~y5)+nL8vRHgvRclV5XkZnJYt>L577dy*;o!z7|wTh)mMZM(k zX0K@0(;n0cl5AjNrKEIe7i=@0|kGii<2&>xv4;k63*tW>(@_q)K&KJ7w|S_pgBw)a~3jy7;~n z{m3#=`A^!;ld>e&y&K))%K<4l$Kav#vg8-KI^Yvk-#&?6-COI-+}4^)CLfLarh@rF zX+I?j1dC1|8ig7_voOxYI2+@P=ByUZEO2&HgM(U3O$xOM z)JUk6P_wDsgB~z?!RU$Ujp-4gSA?EP^v?89pqGrEGJ4DCvFWvip5wheY0L~9%)-n> zVKxFYBFu^~Gc!92Gi1z?F;g>JGh@Q62{V_Ny9kijB@Nd}vSQ2|y7%u29p7#3ie!8C(y2IGcx3(O0!Z!+K@ z3ksP~$cBZC5VAtZjLD8bh8S65WJ)7jCSw9wBVx9gk>ayvGbG$$93tQnhEo`BVK~OP#)5MM z++!T%z(op9QgD+6M-f~_aF%hGfWsIrV>nI2ZN_l|t|K^4!hHk>8W$=!k>N&$BaJIP zaHfDejYA!{RKcmntsXd5z_kSD8utn~nBiiElQrCI9BskX1ZPXQo8WNcas{U|+|F>k zas4hhU%>rhTgL*{(h_}D$7$*L`}U{G=R};?cVz>4`kklOsdCbYkL&r50>$*;dFgZ^ zvBa@(pH^+(67qaHhgPoop=8f9JhI(i-1&Zz+FtI4Xxb?g#ikuE8rON7*k=YiY3J6l zmQ0IO)g#jIDE_E=tQ{&2zFkRws*BXKdU^7lvyhK*VO@-T_1QT+RcasH2RW*wta|t` zee7{a<=b$A+m21(oMUgRreP<ULU@jdNpPGNJx=ZorOUVrH?@^AyL2B^xeO##jKAr&gH~Y9&WXa-3 z2i-Md@snhp#Hah594qEnO=Nbped<@$Z%SHj(Qu?yvDb836Mlu#_ZvZ~37FoNM-Tfg zQ2Tu=#Up+@PsI~T$qRK~Q=9v_ow=_ye+)Uy)r#lm-{WVANzeRfhukLeUQhJoIlIpp z*Lt}XIWL*|Q1gviUNj>Yf3+cWS&t~Xr!Ny_oI<0+%5(oAIrK9B{CaCbQx5I2pS-h` zl56~a(CNYJEic-|C%Yf#l>N%%g6coTr4WBAu+SC0Z*y7)YVLJf(nc$N<-eUl;~%Rj z*?l>E)!I(qenaWrgiAE3@@$$Kkc}5!!2Pj}3TfX1!}u|N_V>v15;FA)A9*#Zk@)-A z7VhkKnpXYbM{ud$DGO6_=?yrImF9*Nb$k*6_6w=eYB+=Df3c zE|KwNHcGkeytw}*)>^pGaqwZ`a|d5j_?~%fcxHVbDYoK@h=7S8UV1`D+~s7awVQ=>wygqjJp6MCS~3yq#=^oG$RLa!ux zCeb_7Lq;zdJvF_x&|^Zc1$u6w_YP)YVHOT%qA(jXBZXNJW=5EunW2MOGG?kVTgHqD zvzC~-#Ow_N3>Fwn7&a2X2!Ry=W(3%Az>o!&62X)LTZS6LLxGukPVX&g{%-VL&%QFkU*9gnbOD> zBV&ZDNn}nUdnSX7EHW}_vgshBgsc)WE0A3W8Mct+P-I#m+a}`*Stn$kkbUC-0T(cw zpy39FBLrL_;S33P7>6)i!f=Xli-Kbat|2%_z&#EeWWhxqI7z`x3`Z%rO2AnJcNvEX zxQyX64Yx5IC*V2>=SjHFIFR8&h7%cXRB$BzE$Cu_LbINE}%C7dncZsTx<%Nb5*xLv{V0$ew6GJDB2Ez-z=QN>lub=+Pjyl*)fgOn`g;9o6nUIAD*read}HPanmFDWBgQ({pYfE zA?yQ%?9CuwUUWQhCCg~I0q zp|q`yM@(xLrv|3%pvwOY*fsBXun0N4R?No_2n-&NKc5|m=62tYB@CbTl)m9-O(QQi z7wTmZJ)vM-{kcmfo>#r7OqR8dtmRXQjs?8tGs`mQO{u`e>Rxm*^H@s0sJqCvZl2nc zs-G(MIe+4y^S&a*%(ddm$RKO|&q|!+kM{)Rf9hn+^EW;CGn*{Z`{rZ`JmPWa2;=Hbqo`TlxX_NKa9pV6G+fuEcb-bCi# zf;$jqpXWWPv+3`d8}Yd<_37cm$y5sOvl`c8l1j=jQS}S=a_V?Lw7wKvC2lsmZxy{> zkn`YP;N9I;s>dz&)0gf6a$EjN6t^I~4&BvU4}Z0YYlNheI(u_jg$=)IqZw(-}s zeDU6+)?xG{)pT;t9uNbX4p)hPOjiy53UMCoI&As)FBg^OXAwuc1n}h%vp7TY3o4-G zPO8}=hul)S2j$C~Oke#yQfD8uiytTbqI9VuWsN0!saO5Kn6m}wh~AU9`s89%W&R8b zd4Efksn|soXf#XJO5fRe(_({FCKUIrUJnt4PNwB=*J3$jnirp(y@uY*%^_bOowJFqSYGu?+s9mB5gkCUuqR|^hj|jbz=$YvqqlX&3G(8pQEuqJR zUMuumq4y4EU||+!CIYijn30(kV`hZeNz9NiOU6t!W@~0ln6<>r&FmQrXs}?I5MYDA z2!Ry`%qXzqfFTPk8Kwl-Qee!m#$b-Xo&zJ9V;QbxI9I^E5)L*lR&cV0n~kF_xLU&5 z#@zxA*KoOp(-quKa6G~F7M!o(er4_eGIs%GJL5y=Z#ETyzxC#_JK}g&><4kt4?nAa zc`-SS-f=+|y6(?^oO}Dq%dPltmyEe5@}V|abc zc5+6^Gum>`v)S~Dht)aVk{J~6d?H1CVJGkLG@LbAurhZpnY)+F9Zcpfrl%G0dw{+# z5t}>L;>!ir^7GW;Vs62-a=^p`^zqU`ytk&Zt{&jW*ESZG)t_XSuV0tqVcq<6_}1>c z@A?F)U48}~NxGLf{&`wHHKUR;cSf1Jqs$#r<}Rs9zg~%KLw1T|!$UbNcmrR5)5>~1 zGlg6jafu3)+01n_R@IM(HQ*de1Le#SL9$x-H}yV`pHA^@B5(aTgyvkHL)WqeSrdKJ zaqH-|%G`Nn?!Gd2V41tHoS6Hf%DSWCYN7n>^K~OXD6_#STH8wwn(&auoyT47i>m4h z^`p4KGJn}Uw20hreXgqUI;#%dvw%ls>_|QLE~4tgZ&|HNr{$o%BbB+c%iP^%?(i~q zd6mm?MKm3IT{M`MiBs&_gug3lrL4X0X+VkhH1hBtoGx`$oip2Vp03l&bg4_rl$RZ+ z`b}Tm*JmU9XQ@po?=GV}FD!9fq~>@1XDD;$n7Mn*+(BmUB73>}nArI9sW`a!le*t> z6Tiw6uYS0X;bnDLdBEHTcZOwtSYC!#cwtq$n^Di(#C$$y2#qPSnp!p* zCu$Z>!G-@`qRgFX=I%6ehnl%d&04QTw>+Q3*aBzO%QqW%X3v)@YRxrDE>p^x?^3b< z{4l*_?nVCH`z7JmSmAEtHNw{`o&GZSI9CYIMkyw*ql6FZMd8<89Q{9m zbBCR|%MLY}+DwfKwVIk4wG(<^df}ia8oe<+BJ|4i%=Av9ho+YTJtg$k^w{)Tq36Qf zy@we%<}Nh8gse$qj*vY@1~sziAd`e_ z5;CfgRb}pMGhjj>xn?woS%8$hyfqBl`pg7#9$npy3AN2>L&s-UBL%rRy3- zMNt$KQ9&_bL`4)4n6B=kL{U*hKoN7!k(^-$L=+Vhpoj^?i~%##Rb4735OcHsNs+c%2NMhrs(Ncpw8WRKXJwc%$%06}*y) z%uJD;DKa!gmL_%gmJ@N5L$O~Jz%c)1Fm zj=gwkIExz$hKh{s9WED>|C!p zYPZ|H<(}pmYH|EG%{F;YN1W-5I(^-PSnlvqR&*m`hqE z+&{^DHf>$=9MWc5$kCQbG=lgrw+ENis(*UOZP%8gUeOga^!Gn{YQ8zz-2Wh=Zz^=( zGg{G00EqE zx?o<6dgQ*V^y_Ck%(}P|aiu zJ$W(|jal1Fo-_1X(QL?Ks-;5C+lvrr(ePfPU9@mrZ-fh*%YDv|lse5Otg&M`Z9BJt+``d8 zMvJG=wC_#WpHazb-8&TRKGG1aUtvYrPE|GYY$Tl;_T2b4@u9Tu^k1o?OCLJa>HvM( zrZI|G)m;9&`nfc@Qpc86{X(s()s$V@I?KbqccyoOnz33Tx75$P2rcR0go6BPQ7!bm zTG_IO1pid{T7vJ1$0(db;amx>5!WJEgTY#2O$2L;Jyh6>!JcAo1T`S2MTMGFs7(ho zs!*#0HH+FQ^gy8(33?K}A?T4oucBuJy$cLfz=8oL0viMvA;3xn%v8Wm2Nf$cnhKnwz&#ysPz5duP6}?Sz)=cZRe`gD zyKot{8W&m@nitwf-~kl8KzM=# z-XJ_ecm)H`5Z-~nLxh*8;3*Wm<-d$c@EQp`M|e*Wc#!ZS;Yq@q5O@>?uM(amfp-ZH z6JEx^(}cGn@HpXhM({ie-e=tEH$>e#GeY{c%L%z^HZ<0+jQT$DMx!1&%D(z)bVu1( zwx>e}Rhl_Qo>0vXO*3|24#9fbV*E+uW^hG!_Bznu!I^5;BZL0?EF>#zM&DHSl%A$^ zLxpEPsl^>G(3uUaQJ)AW`SrZ9Y8e{K%zph=W1EhY-5#W)%3p1mO->HA9I2r#cL$*= zDJ^Mb$}V-~`2mv1juIJC2lv;Pw)E|e4lOmR55HfeQf($Jh;fpiHp|g@9~;F6rw7oc zPlm`D`h94~p5`oP&;i__&=!RT(&M)ZC3DK#me7rdUJxr>aeC;C#|cLVf}=dSRF$So8pg8WbrwVEKzX{^b!2_B5u4lc9L;X975!bDidyMw(UEuW zsoCw_B$2%(GPvTc$LU_eePfLJ+UnPR=V=QwC!^!n4zjJ<20iXRh-Gdx(hczQqju|W zC@tB7eK`7r?tYn#EVpK$P9wgk4kN#)b9HSckqss?!set*aj(_f3Atr|Dq3*r44vQ* zuEs8EEBjQPfy#RIXCLr=`o5DaZ$DC7uEMLbneTp3`wI(D+|vyxarRZU%Z2LnX-qvy zWS5ByGqYdCMULAYP{;2Xy6G)XQsR0`U2w96Y~ElM^4ive1-&t0>{ioT*P|n@z0-+oHIcFQa`PPH9%hejMt71rJksdrH;w6T)mH91 z@DK`&b!B5StypwrOL_542RVGs75X{39`ks6NS!X|`LDPGrA{3^@4O z2;UQrNpKE@bHz2{S_Er|wZxh-tS$BsdokD(!QP?<`1GPZg_=ZdqDCXsYJ{3a?Gp4r zp%>AU=nX-SqF2$g4802sC}6<=6A7>p7#RU83YfVAb^=2qU@0&a*h+x0z?uT)2(TA3 zU@!|Y6EPbxBMP%(Ff$2eCuS&SNnxf%BHK@7{K2fn%q5t;1RM}tpuh>i4Z#t?6~P(7 z9l;?ATw=f}9dJu;fCX6B*QDh{7R#ec81lkcA5?Z35DWNT)F`+e~IRx4h8Z?3y8E8^y zQ)pCZm4ar4c7=u|(6S1emO$G=<3j5cG%vI-Jb;212v3l}8-zzl;1vu!gMxPm4-sA> zJVga>LE`h);590Ejs)H#JVVL)xy}P(adQ@}OCr!URUEbL< z1${Iq%+9eUWr0snaMCN?-}i{ta?RAuhs>@2ttYa$x^LYp6;-rBg@ad9TE2>w9d0CN z1YAJn=LfT}hqq|_;_-5yZE39R3 zhIG!=8U5{?M(^eApuaAe%MWbcqhG~+nE$b=?BdHHc}tbs=*a$V%;RSY?W%i-tkxWt z25k4D)vwPe5}9THTTf(}mDHLp$?Fj+S~Q1Nf2`7*D}SMhv=iZlVkK-9}s1nj&|rK6FfOvQcEJ{ck;ywf1|hlQf`{C!#xj=-QML`eNe) z^s;J0`D>^4ti`VmtoS#QN5b)`>n&N&R>$e3$SWw_)d7wExBsmtvf$u* zI(ST+BhIC84T5XM8e%Q6rdS(t2^%ulOYAB3MoY!#F)Gm4uy-?^0 zL2sf*(W~fL^ezJi46qQG2y75wL;)+2|Mq|Di7Y+9)E%%D7^{Fa1iocq7^fQv@pq!G9&IBEp0QsAuMuHdlXvf#Afw&1wnIs?uN?jz6u1udu| z6Y+obiL6A>j1jaWG~^CiqM#`Wv?Vkqv?eqsv?nwuw8%h{LYoLQNLU;uO&p_ZE!b60YP?0GK-lB>%Mb;#Ej_@Ag zLBfkDc#;a+9w!Tn&nJ2d(~Vy^>`HZywruw?6V#9t+NP)1P4$BR~SY1)Rv_Fhb`6& zMQ7{xq@D9FQop2z@|%+DXwTUwHfU)Vdi-&UT$$g1jvIj3yQj;LsbM{uXWNf9c5(kN z`|A7Yu|}&CLr}E4E#2*RpB}KQAvdu8i*9<%WEJ&S(1vSMWZzs_4Lj14ogOe9HN04e zteRqK(JklD}6O%{DA4rGY$IUQj$qvia@J z&aCf@`WGBSJh(Hh9Jf)O@I;52cdw_`8rKgE+PYYc8~cIgSeK&J{`T^}egjzZ`G4Sj zI|;Jqh*l`?(Et{!-j+rjyNDjzG@;>^r_>cUlB6|tT-4I>1ikL`$=Lnm7ivv6p)8v& za_(S>{oP^1vhu^^^1M{U2MuJW{*Gs`+_OJ0+9=eh zgIYz+6lxbeh+bsqi9v4^dKA4DLC+L=mjDA5u#f-~1lUl(NCm6}W)!d!7z!+9z?1>D z6fhQ8>i}~K*h?@26=os9Oc2b5!i-dym6(~BotPnlS;{a|2D7CwV=-$9W=>)D5^z9p zK>|()ZcyL|1+ECrsK6b;Ap~5Kfl~~)MS)|2YZ7pd0{3(xgAlkV0Vf4FDR7hmR|RJ! z;I81X;IiPf;5Gw}3$7#JJO%FSL|$(ZBWpN(2CFu0__M52`vdt32iaZn9v#m z%~8;vo5)}UE$Tp%LYovcDzqvzi$J?V!xCs&Xj*8SfyRZ_5on%*_KoSrG}WU|XM`tu z>lO|&Wixj?K}*}!m&=Ezur@W))PX!rzG(PHzaFd39Q0M>I?KN4hMIa%%gM?A`CHFn z>FSa4CdhJFptQDLb@uVKinf@xlQXBsuswBr=O z>gZYjT~AZe)hW(qsAlXz=`Xy`v)=EeD6E;gYlc3i1I zlP7+cl#Rpa!%x2dU7yy}n_8zmlj_5B;}a2D|K^w=@4*K?z$o>);U`iEDT32L?%7VYqqMHvT$A13uhITSr4R;Q? z<+@nzF)BpeKeIP0*;kAXIE+T?q^Z;mKDQ>a$3zC%^85^GVw^LoI;n#0Z+S;o&3>5t z=Ab=$exftm{${@XD=<`gb;FNsXuJ(wPJ{O&*PTu~I?vaM>@$&pmN6kvTDiA3Dlpup z)%rk2J|87ZlWH(KpT5kAC&_YSH?(ibP}b~X8p_btqXsvo&__FuxQXmFk-^r!xQ1lt zKLoXCS4varRi}}y#>fSpSLvV6quJ?@P`F=9Hd;Jp6bl(R5bZs7067dCN883m{g?eF zGT`8AxVPju@fd}3D4Z*

QpOHN;v7)?~1@*aN{{6!sMPZ<5HMgIW$lO`;#4aOBpa_fUOZQ zMu0U1%vF)SCo=e87Dkwfm<@#)QJ9sOnFO;FGZeFwVWtdbtHO*C%$mZ?#q0$KB;bMy zoDkfgz!AX}!5IYH5gbCmB^fv+xJ7|uGH^`=&Z)q?|Nb5UE~>yu!A%u7D!3{*i-5a= z!w9%61E&SIDR5i{t_#jn;QoIc1}&(d384)YG$OPjG=o4pLPH3&B!i}ewkT*!2CWIr zQPAFh*Mk;S&?EwF8bPBBv??@CHT*peD-`1T4K7;Pyh{(h=j&AB7; z-~PK^WN?WruKSClQTryRsZYa4@SO7udHM_w*7j*NcJ*tv{OjyBdUjGBws4T8+|)l) zZ8^U>6`5cE`~6I0ft{KYhw8Q8O*gND-}evCmcItHWUgo1vH-VidC<{p>h#{8eao*c zzv%JAc)g%0{V#Lu|6f34k$v}#L2lbJ=%>4jD7Bp}*ML0Ckk4MMv3Zuv&UL1R3tZXp zAvNS+i!HjirQN8=Jp14NA`5NdvQU&Td=5P~X%D@)XPT`4rBRdn1P>|DK6 zawkJr&+RXeW3|6hXNO@_WWN3HdXWVO-xH6ia1MoY#WgBi%U}($7J@YytS$CHuoo4X zbN{z#YLM!6g|u#eiE9a0~(0sK^`?*@I#Y;G*E91l*K> zqk^jlI4c8p1&0xESq4rs;I(=}hA6Bp;v)~WVVzb+wYeezU# zyzNH#d`_Y~qO%vXbGStd=dF`nKlEVBH%m04rHPEPlIX)FRCnarXk_=TJ)L&CggWer zmuCjqv%akwvNZ?u%FojR#Y+BAIg*~6xzbo*-W3Hs?WP`lT7?bjGehoBSwJ_p9L;j4 z=E;vvU!jBBRAt-k8_Dbbde9H&I;lfzHA4L#c$uXt(Ch_b*k}Is@Wh#GMiz|*1GqTU#u)ME*iXuU5w6>U6iVH{X-Y_ zW`d3U?8sxaV){|>PlB%{_#T7D#5oAgWpItSRtIY^SWAXA#o8+DA;De<_GGZPr~yGO z3~Ca!A*hi-tuoYXgxW<967+(gCkDNV9uf4)pl8uL0u10D;Z0cHX_ z1Q^PIB?C+awg@n0fVIF}0_?>MieMH9W+G;TU`8^`O3X~mPKFsWn5CF0g4v208)4Q6 zW-exrfCDmcL2v>AH)P-l1Fi_pAmEPRkP2Kvz$pscl7M3}a7}Oy0rzC!AOkK6P9or@ z;HU~*MZj4K+*N_YGH_XNS^{p%z;Om#7o11Hed>H&MxTE_RIm7m`y0%couWgTys|`H znUN;%>Xgd1%-xQnMz|wtJCxoF*)BOxX^!%@cU60g`azo-Qf2$8zN}|n7R@PNDW|GQ ztaS2h)V#R?9q0-g&)qG}Uiwc;9<@<-YjthrzBpN~13yy|x_zeYGq7meVm4_sZD!1MzOfkopSe=?U=4c7#(uXM0O5dN{8%8k5tuFR^z~S`F%fAcI%~)cC2F|H#@zUM%4F{?0N(kSALB^UEn?Y z)6O@RGrR_))o!afhtJ*dzNf}TWg2zr#E zR|Y+c-VtEH01Fu~p@5AF7^#320?a62Cjo{sV95Yefh_`z8DK2~<`l43VFoJ90>Mlu z%*F^al3`X1W+rBbV1^84DZ@-vn5_ykR$)DDsVssE(lH_;D!twVZap`IAa9v zsK6l=xFk45fm;+fCIi<5=MZpD1`aadqTr<9rr@XwTos(9z+DO)mVwKH(-Lr7297h} zy5PJ7+@}k^9%>EGS`+bq|BM+MbKb^ZZ*c5hlq|J7yzTIX zKgDV#9B zg??{MEV@`So-P;H@0o~BdSw-Dc%MY)!0{5NxoGCO9Yy25FQ6gT5&k<+g{ zY6r(3EA!FM=GTkNe(a@{e+{G=ydLrCRYlR8565T`9DDH-sA#f@@xil8R1e2fJ6}V_ z@wJWjuRWwa;CO!iQ&e?&BV)yp_w?@{1Icgt1?9xs8>M=Vw4hyuF2Y>5nyw=2)mHal4__cO&Z})*leYKWs4jfl~)>>XY zceruytM>4FzJZuKJIemICK+d(@51){GLYql?sBLcV%)XIo%My|>`RLLZ+pBkY6)R? ze?mWPddvTorx;78_hqx-xOJSbj0P_>ZtmsBzWp$e9arFYGP`BQns!5(9*+0IJ&j(x z%rbs?H-?$OvHRjF@@Q?1apv(UO#j_LJSykNt5)V2XJ*V{-@X}0iElJKr?b`gWo#6i z1;>~68|2}`cNuGT(zCl?4aCV}p8UMme&dxNb6H!X1btl20}@xN5q*y-fv`o-y2A( zO@W+{_R`qr%ogSe$Jd7Lkpp(WHTrDa!SwG8WOB}axkmYCqfN|iW_)WPy1R$vwKabk zclhpOuiqHRfR;>Nlxw0^X?2J-h2#9mM`e}6`!c^6nfGf0LAy@KckkCwO-nQuTxlTI zpG)LVRn67H>|<<2g@JUz=VX(P7OMT!ldSNSfut|EB%21-Q%AU#veK6Z;&}C%{4dE` z9bWYuyZ6FCELz@@Kksd%wzzPSy?JgR&U5a`kDfGEcdx$6zCSaN)%=lM*0`BkWx`GN z@2P=!T0WQe3~H%1>v)G%g=5EY74kB8uZ78n`|RIi0~vAPtvu&^JGJ2OWA@__;A{3t z9#FTV+BE(-d-Kph5=VcNI|O!Chj>)5dk+jG{NOLyY+YA1$mA_MbKgLMYM3Z5pS!3n zia)Tu_Y92% zUQ=1t)l;oC%0z2^%RolHHdhub@=_;ARkgP_q5h^8O4^IQYKul->NgDJ%z(PeioQN- zkB`;0oDlN}Vt!x8Gt22HilQ=q3mos=3LG3vIL&9px!3}lU) zlk%-JUhSu~(B>UCki3wtipfxe>c7lhGb=WbzB{`qRuRdnHomo%delHNo_ANec%-OH zT-s`Xxq;|gxhr>SrK%@P+iT$(@MWx|G`u-q9edqDdrCpC>tyBrmNa$TmX4aAY9RG* zW5qRUk$O79Q7bAkkTlyKN>lH2bww{Ht?^+4**LVPl4ZA4J#N)ii#})|qqDt~b?=v{ z!yY(mm-ib8yV*x^Em@%k?sC!E?K2R~wx2RCH&ZA+ASLAT1~tg7hxTJL`1yxn%I1T4YSLd%t>Y%}d-svboSb~M-sxUi z&_)9pqaUqYG;CIDEa|N!=0bg^#ww?$ZdE4??yKdkhhvKgN?^ctwN2xG+L5(TZ_p$q zPAO1*@AucrbD-YbDT=PcF7Z~_owSr{OXUk*-A3dR#6^z#w8VsaG zzq!iOW2e;RQzvQ@6G0DQDN4taC92kXvZjkSkgaRyDfP~rQT-lF(Q3sS$fQ%LO7_LG zYX3FUwCho@-@EzBk(=k$U4b*S^$`Ygy>Xhd06w1|X*o+97iJ&}y%s7TUSC$Xl+4yz zgaBT_ioMIx7JXcz zeCv2y4cQu@y_sSlH=8e0GCc08TSrA{D<^?|e3mO$2H#hE)sNA16X54>%nHRgBo9)^)Q%s zmsQHS8!y#E{gbq|K?YJWI$Qbtr9x$`leOK0LGS6Sm6MI$s8PR@HRk{W`Nnb-EWJ~o zUYo1!9cUmim1~r-qd%xM;65y!1{jEs-8!XH$|v>Sym{Kjeg+civmWkm{6(EQDpjlB z7k=KyZ%~e3{ibepnXehV3}pYVTxHqcACTj-Kzre7AQ$fCDK$I&R(m{Jp!pE+qq_M@ z=iz_VwMA)Kfnp%Pdu&n+UM6(sl7(7zWFU3JH!Eax6&gHokv7sD{C3M0<$6?A`a%cy zmFW)tSH4y0wW1nrV41G{bcUa|wYMv2yG-eq$LU(HE`Yzs4rNPeb-Ji%iMGJeKyX-r zvgTP0dTsGi?Q{n?-nvtnTCFC%GIp6(r9GT~dzWI-suoRkS+42YzFXLR zv>EmW(#fk(c|5*0t$BNemfalq61!KiPN_q0?aI)O*%?T^!hK59Ef#c)Aya#5YaoB0 z?pI7oE$QljEX}kL_>(<$y!Vka||M!Njn*HrC8QhIF9{+1Zeu(&cEAObuk- zRHih)27j;CT%%2@Vj$J?G^PBH4ZU2xMjQKAPi~cSWsXB*I(hqAE$Ek?nAAV2JRIDF z7Dlhr`hC}vSf67`mn1v7r_XxL{fnM>r4}nAcQ>UI8g9^9e$o zztfYeKTat9%;B>e`*OACm3orh{ghG%wWOLMPb+?@C%b}AE4yddQ!n3*TFx^)X}GgQ zaa`AmCO65~W{;c$Ydac~ zv{^e-t|uSXo>R(aw5N*(Y|$27*OPDM=as#A4m7}atJdd=p7=Gos7$-rfnIpBRr_;6 zPks)*r2Mn&L`@2}Y5UIV$@dkPmFT{X^kwXJZEUHY^t*ILxscSErh4trYMs)P*Ou3m z8qA5_v@FmHi}mEO?{%fc*Dmxyd4cACL{B;`xuG=f=1kY+@6=vXJvn{urt*1CH@Fwd zE^S_so*b-mOWC{2g}S@$)@%>z$=3n5m4TJrX~Vy}wQYO#WZ{xK%7u<@bjRsEn)7Zw z3Au1rah~Z;KQ1lQigxHpLEZaGxzmR`Hh}5F8#2Uzfey+r@vCJ zxA3C(0*bU>sd`ehyFxLU(VKp2WYqlT>Phm)N~PYRKD6YHQOniq$$IxUO7$wb} zRmAB@oy51wL*IThZ4%X-qhbH!@07f?{b`&7)562`3_=Og*W&>XXuM(LkCN#6+CR!7}_}bv?fV< zvZ!rUy!zu<8rq{ob8*!Zr?XY@3BU2w@UKMc;H)RVLaO2N-4kfVkRt-G7%QTvJ_^h_S zsh-T*TLag~m`<;SpVOAu>WRxxGrZx;4Enh1d2M0?J!$>d47VOJi*9>!UURJn{cov> zGmpZ1?F%kwRqMcf2h_sv+XmC1DHpY~W_t4WQ!R{^gwP(XE@{iF=}GEZa~%35ls>w5 zN%Q-cNP73GjaQ8cr&7*kt@f`((xtLC-d-9(y#udk$G;|$UYT|9HkT-BS@)_I@iCDk z%NBTLZZutd=Bn1}Z6bO3!~%!biKWLx1b*GenwB}^qZPjc_JCz)e4VpmPAupm1{Sz zCX%DKtZ>eaBx-u6T$^$+k@Qcgj|VJIrgG*j?R{Ay`Riznqx;XLoqTRMy&Klp zu6hc+T=kCjwK$PHOKO1KkHPz-=p8MbClZ@Z4e{Cdd9-)vU9HlXNW!i+#O3a()Y{>m zHuhj5`EF>0$9ztutMA{_E)*t`Z5?g!sD1P4wXFM^v@?+;UAMv4<}85crXFayTNBCL zBwKvaF^xu;Jk+Y>Cz3s#8e^x*G+KV>p*CiHA~C($7+V!Aq@QOz(u!6ml6iBR;Mvm` z(UKOAwc1&U#L3AH_v)~i4!ZVO8@VizRJm=3GhZ#HE7P86TNgopsZH_df^@oEd8)lh zO(bo*HN$x`m(X7CpK4u`6G_zlW_WbxrF74xXWE>EMDl)7bG-81QhGV)xwb7jkz~2I zzG(C~Td)Q;;&kDMv ziA2e1h2PE3q*_XawrNBnxzndLP9Bg&Uv{t5_>e@h z`EzT$wEjwZ?pdXF)jyG}%5Q^hZmp!#R=w7q`XrJA{%x^c-YUxbywN`NNhCl1w#93v zX4A5-Z?qqtiDdfjc6eo%)pXg`x7r^ikyIPi9@qK4npyQ(){ z_PtvoIjB0|*^AatmxJ%McbyZ-*=Zf{(7?6y_Jj}GBZov%$F?Ir(tI67Rv)#CtrJO1 zNk_c#)jB%(=ts@i93GGEgsU7{PutA?q^)lZ*SB-T_mVcyJxxAqi49==8;;o3HPAgg|K#f$AX(}K(2wbt(w$mRlP?Ehgi z{gv=TdsvY`?vCt+GmE!SQ-`10>SqZATe#rC8Cz+|m7m&xhY6(ghznjZaU1QG_)GhJ zJAvp!x?^A0?KHamZ*AN41TwmnD^4@pK__4St@&O`AXBcn;vTnm&^qydw0C6*Bxk-G zj^15BXSeyQEjg7yzUthuWAaWq|NLLA-LV9cQ0b1x4cSG9NBz?nO(2~&=&*Ii-88JO z2_JAMftUqI*z4bJx^kikFE30WbxaZdd~FZSDl*|?3laz_Lb%P&LK;%L3V*ygfn>~( z@zvzLw8Pjce0**KY1mxBCd2p9Bm1lHJ2?rY__Bicblp##YgFX{SqUUN72`WK574CH zRr&Fya4dP?1&H} z&~L|H7=GQS)!&)&J>vn72fgrXBfQkRj&+c$@UWzXCW-bgRK>{{%ATa38#@>k(?2R)c@^N+5<=eer|3N9ojCHF#T+K+0Nq zGqChJWxs?3 zHF-(<1hV!|e;gWqg8I&>$)DLL5aU4~ynDz=`rt@S{?{&n{F^xd&(xiw1MAk}^&2IS zkk-CYQr zq~dsTQyGfS9l1hN4q0$_7Ek!sp%}uPXh}6oUj0x!xv+N_?gXD7eHmcMFYbvawPp^- z_Q}`ji(E^dwLPB9X*&Y1oqdBIe`Cpq8;lFc;|)jfz|HPMn~##Lqa?`({n5i{&bgCscpsWqvDDF?^ta4^d3Dk)QTSsjwhq(IP7x$ zJ`LV%#fMLiCsU%v<9nwc&`gdUL1XR-w=7InxGwfonX;9yJyJobrNV{|5Z06X4%u8Xi9SB~4%3fKPRZ zCnYzhVG;T(zzjbvx_HrgJ<9ky(;PMgob=ogLrb*Y9_W( zUekz@hWwL7Jh8tt6WhAJp^fV|;yz|@{?b`E&*?2)JE{@iU=mOI`_9ID9Ny92TO0AW zKjKKUI&-jB>-Q9WXvB4&;)vbZIe0?z4>U-&;fB|7r01ewT%*ZH8jxzki=V}jtbQTb zrO_wa;i3)ycR!BQs}+i0)Q9_E+1helc^o-Z8j4%j`$8io*z(zz<49^+7=B^#mA=?% z%Quw85rcO)cB%7?x_`0dWhdgurkWAhtTwzB>(Q8h)Z)nd(g-}!{09wR(3m$m97m=t zjKtpNKk1lDjk#-K95L@7g%6qkqU{?u;r`p>$PM#oytDRidU1RcK6PUpId?W1cd+L2}y?D&fGIQV-c4$n3>VNFu(_^Q-6 z;(a*|d!(DN#%Jw#wmyznWya$`OL(tL{iZxKI*wEul7I`BS7G}`H06s!;z$ddL_E;C zD(j!$lpChUk;%6bako`f+3{CRdGG|NZ>=7WY+Q}mIyd7ZM#hnlF$R2QT{Y$#(~Nrt z#*sDkl5j#xQ#S5sGv3-aj?@oJ!r_}uSwM~Eyh@)qvf*kH-s@1E+50x%c?v$;wBOrQkQ`YeGIwOFpzt9Qph> z1rG_V#VYhIxn=b@;?a8^u6m~yOF!9?7ypSR>$c6qU&fm=OLKc3{56);Gf%~xUzxKx ze)hb{yI8V%Rw~{ZQXB45Y|oFqh$U_pQ*rS3+U(3Ndp`bQEP3fXAIB!uVW*n6;(yCy z$=EGt#F)J+Ky%MdsV_7WGk63`ECYJCXr&e4$9!uu&1$g8p zOE%rPHSfn_NnXn|e8RCVI}+KNUpf#=E~lj7(8G1vC$%*X+!ae2y-358d(>k!{1_Oa4VH z!e3_8XSFQa^3C&O$?oz+xZl_MEXuzvw=}?d%3}N^*_xfmY|F!=V@dzK#rUK}1NQDl zTYfD#mbjayj*d?R+JO?w{GFP7N+Sb}ejuwkB4+w)_du_R^mQd|I^ z(VoAfJ+FphiRtmB_;{2p+gaJ3dv=Q@IqjBV`|6F^p3V+Dp<^uZTD%OGWHx5YgB|$( zR&f6NW%yvLCT!3?2mYi$PHf#gX6H8AEIzt;EeYw_-sFj{N+l7~;@(6;5?;%`7xWPS?f| z-`%Tl_p`0p=3kC{Q)UdAZ=H=D$F^Zj8aSXX0n~i6EYQsX}I`e5MF+_TpjXy7F z%eJVUdGGibvaio-e6ndfM!$FF&B9{{*}WRy+t-d2x;ya?Gh)ai>m2OSw>?XVa^lA( z#E_i09Q@*Ld**(~iKmZ>oos3fJK5 z+zxDcNEd$1GlukQv=&cv>&Q;*>B5&vF=R&KS{!}8BfI{(3-@x4A-PZ2;_H(-v67Bm z`B#S+QsJ`>$N%oca;A0Vn_I&52iD=~S&pp#)~?*wHiqyf>+wd%&g|}!uKZ(N*njSN z-0D(NeZ!x(4YZ~gAfo}BH*=bnou^NRCuXl6GSSkr}9IT=mLI&8%AoLtxzFBcxqqDk9~jrh?S z7j`|#g@4>1O;-Ngh|?x_XU{bkKB*v@G?|!>W2(5ao8Mjdm5tHl;MshoM>X^xdk`zmDq>Xu6)eoXyQ_^1rMu~*psWS zeCMcW5@Ed+KU#>`VM{muX>c?-o3IrhaFE&bes0{&Cz`lD--<7l$n1BD8;|N4O%D5Q z!|qcR7JS5w@0X&9kGc)Ntby5y?{556*J$#k)pq=JD`wxix$~wD&|ms?+@Y@rt3BJD z`?QEAXh+eB8s?&@5FBVda`yV z5^we>ifp*I6JHwKi+M;A?^qs18hh`;hrae=?qL#lxd`j+--Vy$c(HmrC9XRiMFuw8 zjmP5Ntn7)zB_2g;rtQXU9`$CEnj-FcFpAv#xEs5s_F)eK5%0V+im=gp@bV6QnY;vX z`}`@#oI>0xCyEri6k>;PZ?^Ie;(wM!k*6C9@g&=REW=gi&*n!FJM+Ex zHT>iVoh|dy#3(W~axXqQu|Mm&MdsTgqR5$td-1(mKJ3z6na`aWMaY1CxbI#c7SKT9 z!zV{Bs_U7zE@=l+f)ZATr(o>_z0qs<OSCPcawFuXJ70A}r zBYe`sNb-4O5q_09g!%L#{P&GWVze~kx+I9*g+C2eoR1_c;*B_|B8d6!Bi#OEB+AKPchg9cJVeFbJ%_Ptc0IW3zDTnAxQcV%4r8zUdvN2nNOGzR#XZ*!XAe?) zaNUMTQe!>E&fX)~VcLTq$ciMR%o(2bWdsX;*MoOj97#%|8UB(#lGSSC$u}fNl0MHE zKI1=%%^T*)En*_cok1F|_&bU{O84Y3b0W#SV;UZ|do*iN?8)y>iX=UqIJO=&hIxGP zo|Akq$k1Za^gYQ|kzxL&q}v(LMRkzLDf-^bu@1V;p<7yeIefh$OY2 zAHlyHk7tWc_T>59BZ+h1QS4SWp4I!_lfUm6NoE~CijTxiU@@I~abzD!w64c+MyHAF z_?TWi$tIH6=N`ic?oMQHR`lY<7LjC)MKNx*bQ1e~Fi?9371ygXW#YVQpqG+u^cty|_0I-WfqIO*n;XFPX{SYrXlrjS-~Fl~ee<=PXwEwl~kpjvyO7 zPvg5^XEFbleR$rI2-0ESX{_5dn_Ug)!?&kIkkc(o@Z<4wn0rbezAH9@L@zJFw{3!1 z;z2kLjv&~i6t}z(%(gs(^Cw3Tn~+j`a9#*2Y}A+Mjf@~>4@>b%Ih3vK+m~ksM3CD4 zXYi?yp=^3gU!Kx8g0wky2KOuoV~uz8<-r*G=~{*@CWNz{xBBuRmk5%TSBBd+iC`_v zy}8sOf>hQ!isU*9>p|xj_Ue|8N$2dquI+YrOec^9V9~ z!a2O=PZT>|<_&*8L48-xVN?{&@_u^r*oYT zBl_{bkHSet+Y9*Pvsjk4upckJ8BUh1x`5B+#j&@>emv=XIN4}+5q};T&)i@3< zDT%p=XWAsNi8lTD2V*#?T5%COUrk^kefslFd&0?}k(Y4qWr=KDWPd(rb2vGC?h@Ya zqi5YV_vgQJ!bw+;%XoNA1ABg@KhIwlPL349@hJmKtm4DHQp3qO`ztumGl_le;=`ZB zg%g|1E4X!D5(^mP!xKZo$rID7xXHgHwk+L;TTclmC!?-n_c6(AFZJPDMurphJ+-b)E54as$k?#^Yk!Uph@ z&f#SAzU#P|lEPNy4&Xi8hZEZR26kAN!m6Jiz_q5~q|>S!c;xRCHuUEJ-mQK(*;n%> zJ~V0`Tio84Z!!xfKJhoPJD9lp?|Cnb%)Y75xOaRd249!5%XZ{uc@7ck2u19{&5Fk)tX2cADzz>qqSzu6W>M$W&3PdcQr z{?7(-_w`}q7)x*fgfXBH0_a$uEtN_00XDGb>{}{)OTFNf03gElmg%VHs2{tcY%HAIf z;QOA2lA3#;;NxwVu`d+?{J^bH@}$jEoWE!pyWe0C-+LjHT+MlkcfMQ33Ook!f)ka?hYW6}M!X3|tkQnE8_@7e_YyD^lFDniqf!p8VtJyiMSIr1$Z$pdh{^7xuIGfO}nC!@eg3@upcJWXZe_m?~@8 zwoO5NTUrRY`0E26v2`tz%7S?3#1PUp{3ARcw2l?N58``6L&&mM)=ymFw257sJ)E2E3MS{D{=`{pH!;7A;k;K~ zFxfi#7oJ*kGdpm2IFHW?CYd*W;fax(*{|Ef`QEf(veNH2Uif%3bNDx$|38kdJD%(B z`!|)8QqtbZN+KlV93p$~z4!ZVzBRR%q#>Ua?MM;{3H3Us6fH^`DlP4$y?4LY_xI=X zan3!jdtdjy?(5vM?t_I%SbF}q*)5kMVa5c1?w68;Z5DsbT)9Y?V&l(-QAs#R_+$1# zbHC6_;?DtoNf@pF*NpP^3uiX?^Fk-_`G@|RRmc?!u~q(@Z;^zyYX8hGr4jpK( zWkQixAYZ6V#9c|M_D)cHT;m!b6X&9&rd|HSKS~W>yUW959Gz` z6LG0pcX;;eknrPPAO|l?#0QbxVVksEX!;k(GiE2EeL;7ad#_wrGA@Xf;u4WNy2E1U z!@_XOAbuK{h$f?YK>5kTLVjcrA9YO>|A#$5UbjN{yDEs6StX)ZUJqDTP$Ae92eF+| zB7SHS6Y!KPh1utWxZmVN%p24blvY;?YhDI%%a}y8b?XTOzgG%N`vh~=phWDpu_u_u zR|!E{!EDtl5zk%h37hU#31b|C`Nz)$%F%w2CJpjo3FtSGJ)hPMQB@r4A`@74J0i(<1L4N3Q;g?+~Tk0oZ z+iQ84xc<2CB{r1n)DqBHs}IC?6NI*mP*xw2fLG)C!0ow$uzi0h=PD*($bmi}dm{+e zXF~aJ*983ftPf0&AmPU2P>%Q_#XMC7nAlE&W4ADFd?7{4NChx;VWD_z7>~az#UBL< zu=orMFCdH;UY26rLj`zcazaoH3gfG%rMPTtUszgoLKvPN#uIC#=oQiz%r#C5ee=UO zwM2?~yZVCWo|D4knlR=aQXGD-FW``RVbAq2?vX7;g^~SW(S~|q=EpF$Ss_KafPV0- z=P9ANe>kt6BgMYk`oa7~rvxMIa6TO;#S!iO!0^i{VV!+A{|uC({!m32m2g@(8xzh` zT&3viqX;@rPYX|1hI6o`6jyCgg!rHa;nm)7&N7rDwJE}twg#c?L^xM#Nb!$ye+YAK z6pHSIbNfgs+Isef5$76(!0)2`{!-laUw`Ogen$AN9Kl1oi~Lvn!+>LFgmm2q*8M8M z=z#;kPVcPn*eQZ-UP`dtZ2%l9JuB$ON3j2033_iD04A#Egs9aK9D7-UcUuR*=UwN7 zB?S>IJ1xP40ZMRl=y_r3i3nbBRD!)-mEcLvc_I3C1TQ`y!9yFBU}V1wg5K8%UbJ0; z0hg6vamEGVsZu1*-ylKd{sTdwTa&OzJCakDN$`gAKsddyN%(CW$=%CE-SABwtmPpqZjF#NE9l?2(J&LqjF#;;am5zAb|5 zxF}w!AVJ9nWjJ`fMR;x!#Xf)IF}p<>`nX*dBE6${(ua7gR~!tvmo5wElcV^<<9Phx zJQy78TZMsHQGD!1JeqDC3|i+}g_%WByy!waW?mi)23A)Dzmri66ps)3tAOOx6~Vhb zihq^IqlK#qG{aTF_)`>D?~TW@Y!&dLt3r={(Hyrq9>-l#0R`i0!qG|5JR&0=cPkBn z&f05&qj@x6m>-X7?nB^GXIjd)bQF%)XG zZwe*vqj}=Uc>JO=4BnL86lTlE@KMEhyy!CwoG0HBG{(p9%&zgG`E(exm);T@jAOX@ zQyk{C4})y2cEQRchTWdU;rijjA*HlkD3!$UwOetR6)+qYY26lnt`O;2@@NFu>)aDg4~pfV^W!jQ!bn(NaZd=-iscY#9Ck#Ggr~aq zh37M4xjr}!4fl@(*^&E#r++Mua*M+)&qu;!gAU<9N-WQ{jKeM(qhLU7hwyk!EMGE+ z!?gHOFlNRBL2gehk5!MukENr)Pk12ouZ`uT;c>X&%_ulw_E6~363fT?#-W1FXmGB7 zDBOG!%iaFP;{N2(AaD6d*zzlutv|$~L)B<_cjl2`HZYD?KaRy8pGHF$yT?M4dK@>j z#bTAg7%;u~SU`;9-{)d6ZSEK-ba^6d_lje^o1#XXHwU}7EW;G5bzkV)A-^H<|Uo1XeJq}(czYx0jjORdySp0K-9Nhf! zLRdaLo>RGDc2oE6WT#>L{wjpJeas#k)<|56O*jhYBYO5O-1H{*H3$rv0IIuV?wz7_Oe$McfP z7~EPg5tM7+3j4cAIH52GRi91-Id~^@9V}s=+!$mvRhV$*oiI~F!e$vU7#yz(636#~ z)J(!-=f|M@Ayv44?Y*$rO~PFyF?iygDl7{4Ak2-D@ZG=|T&On*Y#x6QeCJEJ+BpWT zW={fB$wy(_dI@Km$Dm5xBnbNSQMkHC!v1y7^rInUoW9qw&^V4Hy~zLug$kW#x=$R2!=a zDX)JB_IXmSofnNuA~fN{oS#D3K`HyhN8`i&ny{nmFX1am`BOkNI=<2b*}7kX#$_q5 zbBe}O+FCGY$Zx^wp_IpAG@7Sq!M=jug3Tu>S51w^^VM4LNBfU3t!Dz8kB>(G?^>|@ z*dIY|NCGzxipDP{lRyLzi`-{!0`16h&d!Rc(-+ z>q4+8fv1&6A*xJ)C;hsTS3v?7?2bY;|0xjf*_FJHByhh?Q8;wh6p-8Am7p~c6spGSKu}UQl73C#E#6URTCM}GHQngD zTq3`>iNc_dI^g$5qz_4C>lsm)VK^1$S#_uLYKfe$8HK`vsZf^HofM4{`NfDR{C;98 ze7oA6Ol=cczn|FO?z-SJya##sCi23+k+{)D7cPZ~I5v?_y^F+`S-Rj?(t}LqC35$N zk?7c}3qRlYpnhu-+5BoG9#htXDx;osZfhc^H$03=AKP!qvqeprWFhGu^XA@avYa}*Jng;Q{a@5q8$TQbOVzgu$Y}g}5N>3A6IzJNo zR!oBnFXYJLb0X)&N8<6%(_olxFY@o6#MJ?jD4U@VOXl~Yz=278%`p-U7VE>WQ@zM` zToS)Ei^MJs`mnxFZyGr@iRE-6@p>-<(D&#~?U2MH#ztb5qXB%}-kX*>CGljXNZhu` z0M0z=O#=dxSS1FU!VCGp-2u7L;~ALq(t>Jr7Cdy2s%d{>vC<6f4pZX)-Ur9*&9@CUEP6BE`;6 zX4^C2*tpsR)|>XHUaON?p(Y$xTr>fnjQ*6Jlg!Qg!_i@&DHvVtPu+JXbH>(i9O-Kc zQ$`J-kkVu}UlWescAA1o>;NjNP3AB2!tu^yQwTaTfZ7_8`9NGaUeGXu+`j|p?d4?l z_80q?WCoAzl<4D~WbWqhzy6Bu+gv5;c%IA$O~Uc~FEcpxK#6KTC9}(9QJw{W+vI^X z_g^xQs%7`ZhaPtHS$*QB6TP&d6dGFZ-(M#S1a(Z zA4(ywQ+VaMP+YLp3LfMSrQ8AglcQ+a+~ zC`L(V!N0G=sP~{$KC>nilaI`T4y)m`Xk;q)oga#;e$IlnoZ)mwHI?1sLb1TY8Xi6v zPO3VooZ}aY7uHxqcbyUBXOzmVcA@zFvNf128bR|cQdz+`6m^H#KxXp@T4tZhmYSg` z3$}qb!$#6LAN@4aJV#vV(U`5Gav-zyEwq5kz>iOK9#>XgkY1614K&4 zlJfaf{%sP1n>RXu5{;#%%c=ZND+FV1I>2>>aU{7Z;t?TeHO3JR1&pI__eFk%5Y&iq zgdL^hDDhb;fBhAVLk>H_-e2RW^-U_j=?upH-yDG)#?z=Tsr=xMh|vk&Y#&cvzs2|8 z9E?LVoM77P@if1?j9Caqt;th+aX zqKC>jB`X;7ik(4o%0x08BV)JpU~GBk3>}Ln(g#%;Pmu(pqLB-fT%JgIlV#j1AQ-)u zy1?48s-!th#`o=mvG}|TEKO0R;u$ioG!DkDO0KZ(v?>iSm+>;qV2tu}g~Nj;QKYqu zoreeGmA$U;JaQ5hI?8xxAF+S0T*07b61BLC@_qziqn;b&_fn%LzA`R&86^5Y++dKO z8a)k`ad>+W-f3`y!h>pbHB!c7E(Bp(Uw5$ktwyEsGH$O6!ognd(9>C+l9FY-@jwvP z?{tToyVYs*92r~YiTuyp;p7K(I+iZuPZ>ctRmTI^QiIHw$#~D)ApAPl16p%6sA{#0 z?PJ9L)O*0s=NdF%os2(t2jO;kPncn>N&cH;oNFC~>F%Deah)b@+#+KG!yt^@?g>Bd zYf{B_nRq@9LhmP@kglsmv`5AXgM-jb+Y1J*)S{zBGVakc2tDU`LH!La%0DRMyw8Cc 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 cl3JP7cIFH={v9^v=(C_GeeYI& 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 Gb>7 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%0Dy8$Rm`jaGVAAPV@ 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%0Anb)z5WSBXv%g*MEpdmwt{r zg4+&1$dx~Wk;s=P3>>D-8UJf%h7?*uYu?uQYI?f#(=_ zs(}Ly-1VF;?~exl&cG)O{Jw$96tw&z<0Cfj>iZj|ac86|dL%`I^i4{4ZKQaZD0W;9#dX|e$FJCNN8wH` zg5d;z!WW8LZXq&mpSZ8-cIS#a*zLYe+~aTy({!G4WebUpMK$-6Q=JN$>AY zUoohc^eWP6CjDhS(#y3@iJb2AZ+Lo1uOf9YmW$jN+9UlY*dwu81*!V~cuX(pRip<^ z`io6)T)}9tHB?Y3>nJGb$;8oEx-O0d&vREs-UyU@C|7+KVg==fB&J7+ zEJ9fxtIT*#)KPNZoY?6X4j3Jb%+3i$=DXo>Wq*(_D5+}})b0rxHJA`3uN0Kkn8u4E zmfIy0#EX^KKU7BE;g&V*=@Q9E+dwp6$Ct+3zZO7t60^<93$Sv`Yzvs;1L)3+ScgJs8k6;-LBN`W?4)g|? z%E9g6qKvq)ix>b=`AXI@7d)E5W<8gl1X_~W9b;3+yF8H~kqae%x=2r4A{XWeKA6c^ z(Tj&pmAU+ODhWkMCit|}KdvOu6rD%p>fs$LDx0>2M~&cQU5HMWOx!|9Ao2zF9!gf65Rh)CjQU;OuFIaO zlK-^hNwprKJEMq`KW8V0pwv~;ewER$3=h(VLF~`!4&apf+rBzT_0^XdoTaZm{@FOPl%E)tx71(V2(aVM-l+d<4{p#;fW4FI@QldFX!_+yFvjLl2u-bI>~~a+R=%y=mbx6px=Bc8mKZs_l``Z0saL> zVlfwFkM&0pOB@7ZP36&)Rc#^Fs!DcBMmDi7nea(hh)fvXu}=9hGk!H8J99v1c(P8t zv?Sg_TFKowgq;Y+iKmo%RpMC%Hz$TnNu>t#_(~585mqK`7c?J5Z~UtCqNx6^sz1sm ze3={|tDVMURY;eQ$7$@Kz#t#XR_7~aDXTJCgX49l@!xO+;3|^89a`Xz-oi^~=;~nf zHo`kY=T$}*@Uko92?$9Tt!t=GAbK4wzB5rOs5j9m|5)E1h)%_CZ{j%Xx3wNp3pw{D zaQ^-v)@{HiSdIXPjnqG%-yQww>R9X^Wvytvs7lt}bKbA=8 zgOT2!5j{#quL-4VI)_bKjbp3#sJSmc7}$ z;klyA^S{+w_(|qR_wd@5{cRJJqEb-)SkcB2ZTZVN2+1)m4&R)xF;+{pj zI(h#-@1jCW>^q1}%E@qIFeGz4YMbG0MgkWXSQAxt)ef!~}@>>bcS_<*|9$ zd?zx%j@YuRhtI!?!#O#Tt#Df>*0?WxD3$cb?%wmjNpN(md`wQ_?(>8pD|39T`SFdC z=;eEJ9w9rlnwQ>tFfah2&@eHFtEbk~Kgil+te(BJX#9;}RBkrQYrf7kEk zAjSOuB*Tlv?AGwuCNbA5}~JoS?NCZUzlO7>$f96sOgi+ohNMHNz+ zu?rLyoXOZWT9Ec(hmO2jnX&Vt*xjoqk8rsr#Tr*D-FYgr5LCi@;+?CU74eQWooyY> z8qfbj;xmPwh_(y{+q+xVkuVr*Y?(rJq?4Yk(z3<~71)%wQfj@nv#p^sW5G}oJ3a8} zconZxgut=j>1?zA_6~BZj5W;gP{Bu3PG0ApR`I(;M-Vtp_RjeRnB-os`$@_nzaPJSO42lYlpS1SGCm zhTn#seu;14_e4*>5%=OJYJPX7iK_47CtG_`{1$x=zdL&P>B8Up*}l$>S=}-5^^fJx zlrO08_nbn6apJlEA{HwUmSBW=d&Vj!)^~nOEKhf=#5t@>cQCK8$r5ke#X|L}}3o%eI;y zj}LDKhn`lGU;qYWPf)^U-0ST%=(HcP#%$zsW_rY)Q=9CSwQ3*0j0d z7$T~f59f||Bz~M^p=k#(tkh#?;v3f{=P$5wka0=%n8!!Cvw7i)$t*?TtSAp9k1Q-5dU_#J)m88WfBaBivV=lNj!%BgdI{MOrF z?(*X0=MQ%pxA1Rjh!@AICp$aig!h)8EAI=cel|_>Qcb6IOEhdY(1yDs+TXgHjeD|z zXZ~pG>EAughPqtOUF+FU`}>|ab%%cXx9g|X&8(hU7n(P7_6_HrJGF9Z^_Z?PZ z+4Zw#d1lWEdFD@>HFLVl7n~Zn_)1?eP(JlyU!`8T7yQ?WvtJ z&ogbdr)GBjjWzS8g=(gIrp>#7_t~Ky8H3mrf|C!li8!;mE1G9!oo7yc$TO$bGjH1L z8)|wan>4xNQs3o)Nf%p6UOuCy8+Ff|xl-oLIkP1bA;q*=v*s)ShncfIA!1h7&zlD( zp1Kg2sf;IGarx9q6Q@>IR8G3|Dl#R%c{Mh5&Fne#H_Y(dSaai?c?&(WYHCBC&>Te)>#2=1{?#LON!5JZP?ot7A>CnLo1{^(Z)X;-pI}eV0$Yc&QrxB?`{Jw`2ID4_<1j#JWf+Y|E;X2e_H;5>!#`6s5wr! zXBzEv!)#A*&YZcP$#dYDy3vwS+}a7_*VfgjUhKKCzAi-f6!ukp!SmHIqdevHn#XDR z9_eP)%)TKsL(1z)H+#1QyrQ!PYI0aHMP^~XN9Itn@ht@*I0M|?QYju za}X4DbLwYL_gr6JTU#^FGqQemUH#m-bLL5}rrTbRAHB4C#WHns)5a2)8@^awva@lJg#br3Gteem5wJ81pmI#?=DaAp~knCKIhS;h2Y{F zJtM0@5ph5-2~C?P{a?IGbhW2;*Zz~VzfRR%zRtON+T2k6JaAq(r+%KNZed-h=0+re zD&2&6Oh=g(nkI-LBrX#wUs_W=XWsN08fj*oZ$8~n$yw=$Gis{8?wJ`<=w3c=A(CGh zNtb83rY?09ErraZrbsbLRj3FvPMbx2r!Vx(tDila^k%Y!;Ir+ zhU%odYev?HFf`V9#+>W9aoX1z?BFgaJ&mD=R?*GRn0q50X3T?)=GD&)c@%>R`Fdd0 zHQ)>9fw;s*ILun8qEGFnN3Z?K422_2i9(95Mo=|4NP1JDKGOG{_$1d!o<0&002|Gk zKKpa%3^Eq==-gIv(DQ5N&96!4`-wpx-_sIK9a-Bo@`=(=ZO6Xpa4@~nG|wTWm%fJ5 z5SlifE^ZSl@*dFduADRPdYVlOEQV}JsynEOpAN!zdzAj#Y+zUTJ=#B&&$I~jh~_}g z)j!YmGee${mvxEplsJe9SZnMVrRSV+<`>R5>r9DSVw7mND~#6d8vDI(n0!*p(adlz ziczR$wiXJ8Ka})f5ITMGgi09YdhIP)^p-va7dnLg2@-Wi3aF7osUg#5&PKpV#fWI4 zOrI%(lu4G}PFT53m(qm*f_u;qb_ zQ#0EzO^@I%Nvn$)ou+K0s)Me>)CbeD{5btZYJ%J~1hep1FbB>(pK&AFlHIHl>2 z?-}z`I*k$xsZ9vKh|*9Z0>g~EiteUqyM1q{fro4_pFzJvz|;00bx!1y)8`v9xc=wr zzhK&Ykm%+=Rf{w}mfF*&JVKlFab43(S4`Bj1C!c1eiGPz)$Y#8SMTl&^E|}k`ReY@ zGq2g*dHuDA_7oHEA<`Ub{PcM3q;-9Q^3v0vL|WGrp2Pgb{l=a$@blV^uwj&f;Q`w1 z%{2aP+HMek+Sm`)8uw}q!$}Rj2?KX%=z7P%r!A4-zg`!uE{rS@QQCO)$R758d_V?$Yx!h$JF2AVPRkN z>+K$9s}c(bi8!_i!avxu7B0g zx~mL-hG!ao%dfX+x3^A1%YWXOiFc6+H?aL;6VJdZ13d=D4gYzs(eYdcdJVpo|Ke$O z*L41~{4>VzUwosMD~cE?fBK@Ir2j0?FFx6{Q(FH$fPVjG+9QQ_-LE^I)bD>Q*j-Zk zo91qptICW6RmN^F{6F?WHu~1+6j{&e{WCLar{jN8JnaZk48S!n8K`9Ey(4V!xO#s6+Ae@*@SqF*?Te$xK^ z^y6f&p`UkyZr^nJY4^!q4No=jd=2AMH1s~N;gl^Jel4Nl-uE>OKBwW*jT$a`L&MI$ zXz1$uXZgR`@I#e>!vFW3tJ_dg|D*GNmErTh75~T6=qLQ&PrpOuf0yguzAL}vmo=yE z=z`k+kta3$nelJ$3hx=;<<;&S1Kk>?_aE;&+W%{NG@RR}VK4nB*Ttu-QXc6qs?W%R zYw9BnE>GGoyv@uaG(BrLzaZ{d!eWhz2 zq0?Dt<6D@HKzcqdN0%QyMdxFo_jz4^3;Rk}HCCsy(8jm$VC8#{*5!N4bUqfw*Xi;t zOwZ>~-R&pqeEW*u?m0;K2?q&3u4lN{xV^{r^zSPF80{ZEy7zGJQQF@-y!Y_tBTRU4 zAK^vXzshaGo!;Yh;qy0sY5wBJm*0NQLBh{ENcfn8gr9Mc@XZ+(3Fs&5`7eEC7bm-P&f$Fw_sXHS1io~o$!Z~xcc z!@b78d8rQfF77>^&F_=KTbXCuC&c^xDbII!&mqIqN3H*&JUgG$C7q>y8`I`Rc7D|U zLYEF+Gi}UN&DFTbFe(59QmcT^WUQX91IW3YZh95v$#k< z?kx}Nm&$WO8&#>4KbBVM?Ido?Q&tvO8utZlnW@n7hwVQpMfZ5Mcv$|mFtz_23=eJ~ zRWc*JE(hZ`3Ac5%<)+rbzNgkDwcptH)CwJ}|7@pB``9wmq164aQI}M_HSCeRQjOpf0Easj-{5yeL-7hDoo`$iuzRJPip_^tv~jUKYE-^ zmjy!i)L(i(6}R+NY1h+#(MJKg;`lr9E8#<4JfFkBrCm zC+;J7QvF2FO?69L>1*;6Ue<4Y{XN>NLp%m{uMgU>RG?j(I8-S8UiyD(9*6o)GVh^3 zUgF9VHc#t#?&dhGCl$X#t*4Fmx36z%9c^6&9$sA~oyGldpl#d3N!#64sr5M2_rtHR z>woU&qv*qY4!^#croQX8Y5U|u1|kwVN1m+LkR^({Lx)?~yj{Bw*njf2_BYwO;>K=T2cHiBip?7Pa<6qbQFQdO$x7WD)+6NWy(EFIWpot$((}U8} z+x<_?AL;ZKdjF#JLJMtGJ}GSfQ0LoMI?utvKR8JG-3JNZb&&A)dxnSqqTS*5diq=Z z!|$5#oxO*hec@+u6g=(x-Oi7#omJ{&pWf;w^^!W-y4X5c+y!roYi~GO zdN5_{u|I`mhxD^}3bc40DwH})eN*!|)OQy*upa(%`1Zn7{0_CAHr_vCeJ$>X15;`B zN#75@ZG|rmzkLsh=~E(ETa$&>Mr3VYQg17R1ls;q&AWYUS_{+jkm7oypG`0DuVHht z*Wyk~!@^!|J2VQ~j}VeWtUYoEW5r_oRJvCjhi zKJEE?y&g2utGVp+X>gQrkJiwhNB*QxXWsYU;43`D2O0)H)bPj*pNn6(bdZAb{;|Ki*LzjCJzss~tJ=NSoTHx7q20l^6%0>$*Myt% z*XA5)c<6o;o_WaS+x{OO)U*GKt|ondZlP%JF4sSL|L^PmjlTGIfU332W$)i`lq%-?dgv9K|gDslKGnayk9rze%%v> zCuz5ZHl2)x^6N_1Y0?>J<69`)ENO+m)vwCL|H)}Hl-t1Y1XG@YCiVfq;*pNO*OYIe z>k?Crfi~R%_@8g^urMv%-wXe+DZdL|YUp8LU--wrq4BpcoR;qIg}-;6#=}C_<%a$S z_Jx1=$2y&b>FNGn_=g`bcvyIap}&EB;UC{(=x<;+EnQ#ud;ehQWuU9V(96ODIA42M zJS_i*=j(LwKN>s?bbZC-XP`}I`QN5<6`6aEEKEz+7ye-rzY9(@^fIsy^pz}-uyp)g z!wenC)*R zzE!8QFg;yg_`7a1^fE9UF!VC85A+Y9fBbfn?skKRgAn^s=yz3RpZW{k!n^nZd(A*R>`;18q7>f1A$ryiV5z)6(^Yf7qn!fOT1uP!v!BS5Dub%?_ z6!>gVpf5RasI~vJ=?}G>{&@Wq=%+wG1^Ow_Pl0|4{PR$tFa4o^9`euA#{D(vr@+Ti zz}hxGF3!h=ecJRNmv?_yKLz?J&`*JW3iMN;p91|9uoUQ@w^&N_!+r{Ub}7)895_^p ze46yKuU>w3&z*Ml|LvzhKLtK36cG6#azJb#{c_;5((3*7?5BXHKwtVp|N2QkhxAk6 zvq6DRyZ-TM)A!FqJ{x@2U(0?9^hJUGc}QQB>G$uaKtBc2Dd733KIhhK&yS`>@EZSk zojDI@&LyTr>vtX|1*%@rbZxii7Sr+xTmPTyc&?urm=>?!d3Y3P9;(l)c??X?C2r1T zdfPSKy<7X~pH8Ds<8BXV`d1lvKwic_e1wh{w&z+8h}iFOI27=NHC>zS`PZ~eyv9Es z)bZl>JZ@UNe&^v)py~ll*LHJ$H$9iI^>5JeTz43l9D@m*TKk7j?>*czO8Zxx(0h1uk@oi*cmQ<@b$HzAJziCT3C}RlWuU$1=zt9WcY9RL z)%d4l8L#f$KYYFR_fG3QynU+n_gvO{c-2JXZ(&-&@p2s=p3r+d?|9?yGtg_`mkmtI z?|-|~^B=wA9sW-5{@#0y|2@5jH-B6Ew=eEJ+;g+`k1y;!JbaV(_b%uo-hAU9GVmYV zj#Blqu17kb#GmWkKm4rr_de5mc>5ad?|HoU@T!N5zlCW9$A6{6!@ul3p7$5V|3L%) z!R;u`?mqO-tls_Onc6>`(R;YZrTwekGxSNLZ}Xel-)mr6u*>y^4v+t-_juvgjQ^_! z{)5|5+9&o-NAJ14`@71tfBcKRhgY4W{hLdA4{twK`-cror@!|YlkVu=gbHEZSNSCBhs;J}=`Aw%-=1_7NRc>}Wsfmi9@;}WTk@g$x1o%RnFi>Zu-CE zlShVh0+q8W9jD}`eRx+dz0%M1Eqx9})9;>km+PJ$^!tkmPo} zz&m#!v;il6g9keW1w)2N@dfH78^MPNRKy0sJfZ&}{X#0@3D$Xe1qJz3lovP21`}&g zKDkIXWLPNgyf}`;%FQhpGB}@vg9p1QOuZB$2?h_QLGjf26c*$cD3TPB3ZknFO{xM% zqgdp2^FpEdDnm+fsSJtcrm(?-d(cnlCGv5sIsc>SH@02mbLw{lylLlyG6$%ilAXe* z_S*wiri-kVpSaIPNX2{Pzo=dKJ2ih-ALo-KkB|G&egy^e0LKlT+>WcDpstv2oR44<%Fjsy)x$vKH!~yU}#tj=# zRK%MbKiayW0OohQAvYp>n5$UEk)mQ)!f_+Yi;7eW<5$c;Gi>Nk)8GX~MKp&agHy4L zM3Sr+{M4`5C8bG5>Mxm^fMG65wjssz;rx7h@sJ^Oqk;k#d@;l&{G^=pw}JvVt{@*j z=pvk}0$?QA%LcerfNKatJVPSoN+=|um?1-W8#07y6}yUt>Hsn-hBySkk@>D6`6N?m zfx{Hq+6g5k1AGhJ!=RN=5}LYQZZ}nh_5=v23kwO=v?T^~=1-9#p;Wm@Le-Cq%uf+X z#z`>9%Ofj6gUZr^>Wx42P^mOg^7-jMDxP#*9Y8lK&;j%#DOA;i$nHY$E08`zk1YU0 z8vrgS7nA{;6&6x7O`Dgec%!&TaS0-$u#ggl4n@k53?d4{!E1SW#YOJ?{9(m(S(Rc~ zF`@d6T&0e}Dz2eYOL$Glq8z zpcrP8oQoxLA^qMplmK$3Fd?lZ(@7<{YpCF$enTZc#l-?s0)|mWF4PhZ(`6_M(G4^% zRM72qR5vJ)K10nNg=C=v4RnC&M~(x2ZZ}be2@3i7Ag6ki(t1{GF4(k#Tn*Of~>H}fo+Aaz}_`Xk#Sft@rqzY zr+An%SV$sVBpEBx8u}7f-lRm$VT$V%0#*nTT1;QHWH&^ly%d9p^cHd!5=BVoKrO>1 z5JG66(^3VY733@|M9QnSmM*CUDQqeEDJp=03eYt#ROKQWR2!+%$oK!V_vXNsWlNgY z&5Yqj#GUWCH(oOts2B}2)=zi>LoiCMb&1_Z6(F>g#E`%PDFh5khXSOQmC$TWi^X15E>00fT@; zR4RjTO+pq?LR#70?hC+?oK8jpF2f{tGG@{xSWeT);2LSUY2Ir(?00AxcaKp6Bi>O2 z^r#D&@9zOu)JXFK&ZONz$S2-9*wG+DtHtNYPp6QY-&rC(2)(1i(Z!yCObCi0%pt)( z8&(k7BoQ76kP0O?+);6`lxjzj;IR%~mwuL@miGr#dpzj0M@u}W3rL%ZBeBuLL(XI% z)5p5RrQAL(2BX|BTMZIM35judn63#*qkp-kZg5FQaW86OBwCr?8dZ(_?%_D+OtX{a z{y@!BpBYzq#wdfxPxI9$gfc@Me}jK>lcO*5353iTL~qGd$fmPQS|ECR1A$}-e5F$N zN=mOBA^6Wm#|H@c^b$oZaa)}NCQ%{!Fk2L=12{ngFsYW^D`(u3g&xfAygOqE2^j3| zfIk8_F3iW*?cKPS0S51!hzD0OllA12RuQf4>8ToUwv=?-s6?xHq}%`;ck!D7oCNCL z?TE8l8A{_)ab!dL)(UIoL-V$+%qoyM{X))4_z)qhF8d(X zU@9Lzd0dEmpxkL8ICgQ&GsYt0H%vn0Fvc%$dwf#kqd)c?ELY=~cm1A)QSM{Ezkc$R zp|&GI4vyG(VB^u1qYtl~`84a<=FkK(Hlfd8k`l)RAKPKIA~?8psCwb>+~FsqM$YxD6?#i7o4n6I-9fw9*P z0ajNsovF<#nVS%4sDTF8aN*zp?%GQXm8k~KDB)$!BzURUR|G~c$>;E{7|72v=La(G z&n0I~z}WVsRPm07Ivy@=z1=e)zPr84rFS4MnMUyP&PN#t&MGhznJ!HWfwGo>z-`?$ z%dSgsQ*BmwD3c*vGK#q785LbTFhuco&jVQzLd{_!Fy#@&DF&e!q{O`wC@FS-O%|s{ zCRRg`WkJvoj&110KS!VMQGke)D)h zZfWpP8X$vW*N;l0Y#!Ug-tL(SDpvw&j~q&?2YjNSzU1~esT)FUd<_-#6fx=0Yw92NP;w7P*j?%pC4pcrZj3**D~)c;#yXa0H?@p~uIf zLI?v<9CaTKxqASC?$_?`IHUXGvH|DAvY@ettFsx2La)#igcZ!NX))-2GDF;8GKdw4 zRV>|b18&Aayq`u|OMy=Jzq1*OC&8^j9W0Pa4WR`p0T;O>JQ@VF?!7IA_F)} zJls?B>R!8N6=vvI_e%ynIMpa*qb|Zl_G^Lpx)lP6d3xw! zRE8KIGk*Dfa=!U<%k{Be`|j-Q*H-IeKRxmOxDSnEzG9V;rN%6q@$l~=q3dTnZ;bUb zp1SJMohM;N0=n<=`Lk!!`lI8Ib5|<4U0$+8#&TB;O7aNK^D%=1jKIQ`Yi#6kXu;Ed z7&$2^QW(WEob^BJTa0Qs@}F6}te?plp73FekaO_F+-QV4>M9ZN!L2X^e-@Xas|)h+ z{L(29jx`2cuiw6H`xWgL``)hX`%S;6Z)?x5o;*2Y^@9J@ppKl>|MT-R{y%?y_Tq&n z9H$d5$^2qj>SAWnx{pd^VT9=ni&s6eEMm&^ABLws2r7nTrg#-8K9DK}latPII(ZMn zJ^Q_D`xMRf$Dgh2_wAqW_YZEg{OZ}WwoU0m6*)l{PO#i$2{92DmMdjGxfe4ckT)yWsS$*O|K}walVu->eVmf&b!#(?*{X5I{eT={F zo4#fH)z`~i23zWn^LlANYyUU#_ojd6<5O$=^^@o4FR$+0AH^5_8vCPe*;DZR+?f=1 zNM$;ME{+LC?rt~JtY8aLzH?5$`-$?|HA$;fKVLoV4`rA3 z;Bxhmzx%g-y~|hLMqEha&aE{XMTYI?YOvApc6-Duj$(w&HMj^ zop{J}FSmh@`~1-LpXSH=_ia-D-};l;|2NvSHF?*+gR`v_{lo3;)0gapd3wn<9VQVO z<9J|$>Fq7ER_vpx(Ta(Fo?Wod=hA`k%NzDt%pV@pKk@V2IVm@>AXkRdhjnKr@}|rA zge?I5VVZE9e%|-92$#u5IC~BDg-5FhWBT#)gnlXY++7L4O_;5Wc;V$LrHwV?Z`b3y zi6`v*f}I_VFQ9G&Z7%2HpTd1EwR?8X*oK+Z2w%xdds{cMVvtsrQzpB2d45U!pas&& z=yy;zjF@ld!|Stg@{Gh38@WE```k{3=@Zc&HxDKZbB{n6+S2E%5~JkDf4^{FN$NK0 z-DNlRojE#NH9qs%Ncr;p#R6X}@T+HmAGD?Zpu&IkeDRlrMvFnjhvpB)_~gxBSj->% z=D+xRXTSOL-&l@M-u|cS`H_W)_nv;mfbGlYiv_+|;74Eq7Bs(nzF6Rk1-@9|iv_+| z;EM&mSm2jpfyId8W5zG;-#Pow7UP$l_XB+2^abmWI(0R+KfXdB|J{RA|JlwnK12fY zzdum-KfHiopKzQy81jaImoK-aN|dAx!&wJ7u1m=$Vpe%fiHMw7iPd_y6JVr?1K3EzJ; zR+}#&@%jW}Kp?S$N)kuksKBU^A%gPl)VnZ$lDQ{3D6zF?=?i&q!VU!3a_VqS7E?Ug$KE`X2b(JpRe zt9+*6W7A2)r5GsA?R@SeyCQnVpcDvM*uT>Crn`4dA^?#+MU(-R{p#VDG}GBbg3wHPOy1u%(M)-v|3-(Gs9M8r& zWbpnA*+<!fq?6rWywa=+I%4c&j`Z zgPERufO~Mm8+|=e+`vp)$#5&Eo)c4*rm* zlIV)VCDKA;CUIr8_|JZ0VZmkl)?2+mLREp3TAC!_#DPF6eo9NeU;xYsICtp>79(H# zT)^pHwN7UfAY1G z3!fVcNHKK8Am+n``kabJanob97)_tw*pYDyn_H9&kTw8U9d~-il#TFM2)W%;E3yF> zta*t9Kh>+qPYB)MUwZ~25X}NO)wNpYM^%sP+vn21YOAEXEuVUH-5{hgq!HiYQKp4S zE^s)1051Cp;b$88vcyVwJmdkm)YoR9uxM4_S1C8|&!8q~&sJbs*8`^MxzxOIZwr^0K|L75R#O`yZJg!RkrkUDmkfmi~7s5i#uV15C2YoLWr9{KpbC+-DeDyWRWjBI2| z?-QG*g5@X@(H8thcno248Ah~+Q$Y<>4062V9Te3_tg5YoP7m1;z6UsKRVm z{OR=4!%ePTqaCcKzNrj{tq0@jhA2D{O+DmXGL$3QHM_!r06TDW8~J#7O1fQoxW$O# zW5(}!|5=YuYJ7COfBNiy`@HcBkCTq^965BpocV~t z|NdC5p%q0J!Xu#%GN3?slYdD{+BoF9+0Qa6y8@|1%gy(a(CPIxa?ObuedUHYr{$~( zQ>srmdBPrtri^?b+lNS4NF4U8|#3J}=I3AyPsO^Y{5Y`6i#oBq=j$ zv6Uf_w5ixSUt~+0gnQ=Y{0aM!WlrXWdjT9O90AU>@fi-#+(9CQMKnc`J2RrW=VOZAQCA<#!~!@)i4N&}z5vmSVAdl4VhCt^r)jpKFw} zQ(E~1&{D=%NgG%7OravNWr48D6HrCHw{<`JhfRTDtj?xFNJ>OyyIo zPByjXHNK{@LwG-95MV3?w0FvF4AH2yoV;pEb_8q;h2%oOJ~N#{T7XCbkI<+>TqW|rci z;4+J3u4yrD(fmM(bB_FHp0YSIHEj~_@8Sz6T+IxJbTi8&3v#0rj5L0xI%#YRSwn=J zqsD6eY^*=NYx|XbkK?z${Xh2Y%lZ{dxb;78A%8Ki=(^%LKJyZ&qeUz`f7T@JH+|M5 zlRE_q_~EiXGAz@%-FuHPT zF~=1AIju7Rdct2}oeb|OwUQMPwgumxcl`be=O^C$UrYNP&riJlzfa=t1uNZXk^_dh zpmlo4DmX?^OBNb^$stPd?vGj?r%h-5G-=cb>O5Vq4Qz$I0M^YdORUQUumotsAZ2{n2oc0<=_Zl1;+nV19AXv=?P3?R*)?4Xc!Q1zAM2;OGYZMi z2l(_ZU6xvA%LR z7n#lq`x-nJPau;00VYJ2?oZIiUyDIl5db$A8Z0a!6HWz`R?g=L}02(yiAZx%kcDNfVFyjtHP%81Lnadg?iDu{KZh>1&pR34n6>@A{aENzLk zGNW5-5)wo3nx_`25lKi|4rw2=aB+GA6PC>S2Wy%;T=b<}a9<9oYWbJ+1wpRPpaVEFJEg17^P)Pi)(m)U zn`uxF_f#)U64Pb!eQ1?MgmMqErE# z74C5@{w+cSEQ?EvY>TStSv%*%j@=3mXsnzEr z9Kyz-Gpp1*{Gw1*u>H{{SrDwgh$>6O9Hg*z!=JaErRib~57o{Aqfpk)RS(Kc!eiZT zrm8#pL*bFrK976UFPh4pH?{M|@Dfg0@=3`v=bd-5vf>YPe1}f~TyVwxeBJD0(;Nx{ zO0q7R=1@L|P!1ggG**q-=XJldSb=r8wg6l{*RE;jxz|*y2p0~Ac9b^Bg9KH@0vcx7 zR$;GC9^%IRdeGj6@NRj^nA>^X?i%fR!DTuvGVwov%gw8rb5;>C2yz3s$VJ1$oj%V^ zs(p@HWvlkNU2xx{3PaQ!^B^PZ#lcbTQ4jUxrf|I-sDUbeY=Kt@s*$NVq27lFEi$3K zdXVY?Yz{GE)k8Vz6cpe4Ce8T{D*--az`va>H)~iUnOD}|^WH@Dhgi)8z(L?V?`$9A zu#Z_k&Hm^AXE{DO9v^?-^uhOIzj=S$(-$xJ-@A2R&3khhw{Rb?|2`;YPQb1?!?l@| z6fQ%$e0I7NTcOAUwBT0vFurNU-1i(aK+29pNx5AYX~nQ*nVCnwE+s>ufrr3UieIyj zNkI`OpFAoei2tkcv*YEw|LOnTAK#s_<9Pp*{(HmU+fOV%_&#}g!;d<={t3INUtV0@ zJ-p-%YW$Yu{l)pSr_Xt#8b4aa%fnt>-@W4Z?4CY*@xW;5#nUHGf5KzJ<@2Xc)!+9| zot^!4f5u~t|BruP@=eptv;6#6-amEr)uR48@1J_p^kv;W=lxSp8M!;z;^QpvNl(qo z2tV%gtMdM-v#%HR-+BMko9m))YsK%!U0yz;-j~mOz^xCh@`^X7aI}GLKId1y($CKh zu?Qb~Ph7Ylr`z!wYr(k!qTM11W0#k(GVWPJLYKhOK8 zEIU5m-t3Q02L06cS1y##pI$5fQGc!GFUJ0fv)je^Z!bQ+>03Lp`0us}epS*m62b4@$Tth}yrFiKkg#_lNY-B|! zB=wVFEik`a;m`J*`1iI?%|GqLzi;gK$?@-prGIwf-~Z};|7`KTy~clT-5?H~cM|9Z zrVWV;zhavP=kBs{Uxs_CnXUHE_;_WTOwag~q6n=NJ0bDv6QRluO`VxJfHqG}0xN7HD_FMyS_6)Px;|ua* zH7lc2yG7~2q=hKpx+9zVl6b~$(oQix&*m0eA_ap^!NFQi11_uKSP8yru=F_Z6pVV2SDMb8KaLW{v_+JGV_A3D?Gvp<^i~g*ovco4$Vsh+BlI`HBwHb)jqs$(ZZL@;I#sBK3E zNl*0%{?ZJTVFlqYPkrQd^>CmAW)jWe{TB|&ml6V7;Yn+3q}wCwJ#95UAAl=!PJoNM zJuGn5*dWatlU-+5cXAn zYn~dJqdcfmWvdO^Q`TEqgF!0_>e#(%G-_V^Xv?_hxAPb!pzUZ{d)#I|8plHT@Oc8` z<2~IQo2G}0zau1ujL*wGq9heeDGpuz=TJR(*KW{m-3Gr{P0QKC zRleF1nKXP8SlN=vqa4vbcdu*&G`*^(LP7gt5b-hdABlhO@kx!3j`x?J{n5`Gzc7|_ zn8vV!0|Q9MAM?R*1dXjYsnBJ8s}*caRMCEwYn z*@wYk+8Zv_g=g~d&B?q9U2DZm8qO9ThtQY`ATjJANgkf zo=r+^h0pa^>Nf{%S#wTYSbgNJAN9m?X=z2ikFtvWWpH+Iv@i>X7LSg?Q;imzI&kGDQ4x-Se zKPY3z6*EfKT2JZatq@a%trc1Mr%q4u4wd)qwPQr7- zLCGFI!RO|-9z*1$kF4a_pXAGRB=lv9nxmMIN~t}whs#Pv@!be-k@A7%B)sx^OmZ|E zS4oWA5I+`h7O&4z-JxN=$HmCVcWE>e=CfpK;hb+6Z2C1br>cv%@xiLhK36?w9Ab_w z;KHa%?3#U}hS~kJjJbiWg;%Cztjvf-{6hFbsd!{pc-RciUEjGL6Je6p^_Z_qcxt{7 z9z&RE%D?pBRN9kC#-#65^Hn}YR6VBTT#n>*%_T*t96oXUlKA%?pVateC;t7f|Ge=_ z;@{bS&Jr4Hkglt^8l$(G)Q_ zozal<>r*LH5{S$cJaeBIM6UEByg%B-Ene>Ic6Vkb8Nu2v2yVQt_;)fGiEkd)eKL*i zOQK1U37J_IAwR_#9`En}_HWp?FRP8m>$e!L z{;!uo=d1O?>735lN0V4xqkZ|SuSCQT*pPudHq(-tM$iWzq7xw>@%-F zZsOmYzJPvC-~aw{9IR4>Bmw06YRHvIy%1e}25ODT6o9bpJcU0Sz4(LM9{v*l z{>PT~JD#6-`#107uihVSOmYP#+cK~PVeW}jM)P`qxQ0v6Fzcse#;PthkN1aX-kruo z3!d`XUuBxdg^CQa9EhaZGQATbSY5n7+*X*i3|2H@@67*&L8|nr$gT+9$c-*VaPp3R z!}xbQ0%Wo<#bwP{I#(+byW$Q(cb%c;I1!$8;J{*z6J5SPJk<(Q4g|UA_sEriQiEw^ zl<)*UJ7?$LR=D$BPBY%tdR;hJw_d@(EH_D`8hOvNQ~FG7MdxDg3>>B-r3tKVIayYh zPJ;PY)7+5;!I`p>p>gjUBihXw#{Y`?G3wUsa&HKZ# zGt_QJ`mLsx7l5;z^{Dykl2NRBV!WoWDVwThy_lJ2r&OI}%{vcJBQwn$@OZDEV!wJ< zz3&4lTortj5u1v?Qa22$O?N#YFb`c(m13`PWtua~PG~#L4I%U7F}A{8=b|at&eMlw zBgoXrq@9mA>jit{4SNKtW?iq~woP{r1lnsZ)(U!3QwPgdiG)b`5!tqvsw3Hzj z^l}TwF3I8n9dHkf?p%|$s&Gx&l!#r5)m#t#=sJV-KyCA+GO{lj)ekAMeXd)b%n!dg zU-?`>EC83iB7%m@^+O10GpTPDgp}c)lG@TRdN_m&(K~l7)Y3+DDO3m95~weBNWQ>O zz})~h8*JYktWh;J?*`R#X%f5KsSTz%S5r&-7=5myiCJQjXh1b1G7MrcdhFN`?_0qJ92mvtFs~XRqlAlo`}Tl!G&PYpqg`92 zzELd<(jQRMYUlT9LK1@e=o43L+Ih9rC^>}BppJ}c=PTi9-L9W%m&PAX*39W-Ks)h9vjQv%sv-d(UEni-t~Q!LIFJn|zp zuNW#1`R_hc{*#x;KfHczwET#le|d3pAbuY4iJ#{Mffv`e%15;Wa$gcZ{|K~~@$+x~ zwk5uf&OZ@zsH;el3#LvHN`nLW*hWL5=mp6a=qW-`2$A9naxBmEVh|Tf& z>EE&6K74-$@65=5+9w~*`S6JRJSV#cW)n|+-c#ySk@u(nf*D?{`;RgI_O|Vl`L{pu zr+@G4PyFeX{l57-PuOoU&F4hdUjm<1|2ypWuI*Fvmw)QJv$H?->r4E7`*-czkN6$# zQ{0c71*Tu6OU)Ojxth#7W>=lg{EH!3JfCKW!|>WKT-KzwCu9CMvQEtZ{@siAdv+YZ z^L^7tdmi6kKl84{e6II@UdTDEKWyW7oR@WyHyf>(!&IrB|0T_68je%AjV2Mw7T}yC zr@8-|l51xYIQO<+@jJ=GO)p+dEHRi`kjXoMak2F%Ukn^~{Of9akiNhX-e${4*plJp;guI(%TS zVF9rm#P1;2Y0YK)PU%8btyU&i974fZ;V4%8p0XsW3ZHk3ellR zh+2aZsFPx(#%i4vZC2#63zJQ1Gq8Cx-+BQ2WE;S`xo zu6Y_qt~9+w8xY=d8O9l`6AQ7An`1su4 z5e+p@Lm?R)$L~1Fq16N&Q`DTsALP$`>@t35ZQW}gTCxn|`V#O_=dySiLQ6P=M{F}4 zh6oZ9FowB9Onrq=2~UZ*q6}e;RS#Y9jAltyC%`Qy5CcLOWQxYQhX4+o$RO+kI1$zp zA20_L1x(?@N5Ew^O1yAB0j}nT)25XX?bR-5uU*J#oMU!IwgYfA{iOD(Mwk}hQdIx;9a;J?Yu+`|GrBuS%oKH+np{9TC6qyyco5;%y!w~erGy8yI52%l zaqbdup-{~-#l*4_Yw2VJT>CsW&HA8L6-WZYvgzi?hhqyNIv4_E6O%<^=A~*X44u2J zHiPcrCQzr_Y_OWSXJ^ujs1RD;m+;7ll94e1PVwfm2BU|Y;&;khi~iK^MoU)XL=B2Z zHLY9CAQqq1jbT0Xj8aKLR0y4q`t!f*F(BGdPFW89Q<$1P)z^c)f)ItmZxUYSY#$9J zt*b3+v~#Z2KJDM0fz~LT3o0?EG6IHbR%_u?&8JQV2k6fbRC1bsCQae?B?yK~#PPxLDVyREm_bVG37RMcq_7^Nxtti_J<6A|v_i;ap*Bz{S|z6OvZ(J5_T8 zEqk~yi6Jx#l~aZdC&Kl4yg*061g8~(05SQjr8)pEx)|%|%)2S(OBNGTqIxs=<^B=C z*=Lu}m$;IFfAv0fRjbyRw3M(0<%Xn1T1-3$Jx>h*;o^P+xG0&1otn4p(FK0ml!B>w z6VM=OqtfxdwIrYUMOUG{6py!(MzI~?*m2YxpJQP!=iX=YBvS-9$Lxr-(y5j{5^f6D zZ?Q(3-I@!bpk1p6aEhrGRcK%Od;l&rkA>2yMut8osV0q6@AA2#htJ8_KF8&>K}vx3 zTJXrzNUU2~Qr|+mOf|Tb(TKJRTR@@Rv;a;AQ0b9Rql@*tXSve#2YF2;=V$$X<=Y;g z)cE{(f6TkT_w&Xt44gAU%r+TEfZSMfV6>N^U|*W!g{U5zxe{@+F;N59H=*KK>RTrBzz;%@jt=UANSC zE8JoW;g%cqkdP5sID1&gm<4cFRW)fN9L^f2vkd)mnamve!*dH~KGH-Q=a%x5Eh0Je zbsmpMCM}0fu6!XD!D=Bt{8mgmt;*%tGG^_^*RMmjL0SR zYGIs(>7I=6C_>3Cwh^(^WsQh3J zFX>^xSquM2pObsIY%nMeNuPbL?;9JlcT1llgg!`fM>d!?kk*$g;YDig(V+kr5sQ37 z!WxOmK1iwgd1FeNm)sl;)me#O@X^~elyl$aV{3v;muM$1ZSlf8N znt>V(8x)rnN{ZC%N50g-H03H|5ISGdqV7gy%#*_?v0`PpLCD#%M%H{GQnB@^^ypFs zAUPU*j_?vc35QSWp>RIooV1pWLQ!huOL9uAgqzJQ9!3Q%m$aeoARHMnh0VL;^YCaT zhfc^i+0Ny~r*)Z`9tk&#@X89TGi*J5?xxRB8 zzw^`I_`LB8>)&Jj%snyO>?<~hP#)hdSK$tLip3PC@vxeET6|p{PobCDozkSt8%knb z4H8RPj9Er0?y^@dZn4(Fu$6g7!);vP(7vq1uoYj<*KUt-k>^Gdqe#Z7`TdAXGAJD` zdA}RVu#$raGSlPBCvzNGHo1WhvPg6{D;=k@ob-k<40hLV-?sf~e0aP+>6^cA-@b|8 zap}?Z+pO8vI&PgWRzX>H9dR+o>$jCJSq78!8t)*@OyGv4UB>+I`t3p)8F5*k=_HrU zP_~nXN{EceD$=g~-nD(oey%^R<9ELO`}gg)*uNG0P3yO>=3g{n3m4ABk>yk%((z+? zT_P?I$)y!?8NV~{-&&P&N0*r^e#aFM&V#>%gfYf;|CS&FC~yN&Ag4Bj70;5zyf#$O z4?|Nd2&3KjF>x)4#*_Fl7BP?P=lbf|Kd@}y$MX|!{=t3wZR2+^RK1vP6ThRPS-9Md z-=V4Iao46f@?jok{hj8amU-s&PDwuMQtJ_k5y~V){r06rYb^tyjIH%5q>*c)ZbhiY zkPzTZ+2oVGlZGyBF!O~^SaX9|Gy0jm3XuvP$M2XK8PmdQ7F_hB%MOEJaMqGA3&&4n zo`f^4+6%B@fLLa!n8%vqchFhIQ$n)wJItqA-|4p=&3zb3K{8mVszESpn*0pkYM!EicSo^U0Z3O*lou zgT{jW2>;?v<-0p+vH;jy@)d8UM1j0;(-t}}ruUq4^xHbhS;#;|+}Ap5PY*Ny$hM8b z)doJ@KDyx)SZfY;)o=Y`P5@W95wj9z zM~7t~7#N6KoeH)dH3cn^6t}K(NEQzD>ZFd}ab~rCP8AE({IV`T9lukJQ~wsOT6O@8 zj5eb6P^kz9P_@mvX0v;CUBDrzmVBHEHg{%#OZYM1FdGitiQmC&OTbM?#5&c>%w2XM8px(XOuc9uTXvN$CJY^Be~`e_k# zdVEgx-RF)!M}IY1RM(?A zMYGy+VOLUjoCX6;4H%dv1TL zGHkyVNj|$U+qu>yK~I#~<7C;3t6H=|2As7VJN|Vh+F}k@5i!BGoyQvSiDplwtAB2t z)5#z>{b{hK@YaeBpdb~3X4mHkSC@29qN$dFA_JRrtzW?`u+p_)i+W#GkcOUR<4?!$9Af)PBnad;{pfoRVz)cXG9pTr5mPPOCJJF< zm5-yQSdMxiAQ`rp9kD8yT9VVe)xRB#C5n?r_d4Qth{pv_!B9{~wR#n?aHYQ|vsa7q zxg<+)<*4|hA)uzQmEw>dROc5+D+JEB`;|MU_?-c2Z`Kp5?9#GHwSTRVfXnagPTL5u zS_o;ODO>r(nKiGbR`x@)+_K_??32jz)m)FV8h~Yu)^?s^sTN`z?Y48@ip=72maPj& zK)dxbAAbt(cAn*J`aQE4zXN&*pjpK4R99cF&2jDX7|RE*z4)El?~(P%GHSeyaB}Nk zw4yQazx-yuj^jtHAVY*P(_I)i3q_?Ly+ zE9;v|U;ERQ2Kjte{LZ@`f1Da0fBO&Zk586!8GGl8@gE~-x4pWN*WI_r@jJCU)~C7s z_#MY#C*pT9?1L@0a&PE7h;rlm<;3rBgMhcP5LB}knY(3|C+W1@)%ef(pEnxjAO1}H z8NWjS&+{kGm<{2X;u$9hx;an$&c!Y7VR>G0JnS@oQSm#B==mMWjGl)4x1THj1$Vgn zN8@*1yt=%5%?#zX}YFbetsc11e^QP&`x_kcB*H8Y?|Ndp-1OL%Q{deMbzHjK*f+lk-#=|5id zBl~57Z#vLx{pdft_Ium*sr%b;{LVK&-?ty}3l+aJUgX4W%K#o`f$41-!PS3mJV1nV zj+~w#nQKeR8;nTjztgqFP)2^j&=YSr@z1T^ zd8jVs`h)Yo&LbO4;#^TCL_IQ-%d`>85ZB(H9R%ftLL5nntT43kIkm)H9k#rQXi*_Dd*{IB-%_jmrF?NjzUj^8=^C)f7-)ZgEE+vSV@as1A^ ze|pV-+fSUj2LHJ1oY-Ofmg(~=2hcZHv=x?CL;I6U@RhK>|U2GD_ggC%qCb%rdc% znS_jXc(x~K-)cBa$biF11%Bb)^h1p+u5TRvUqi?!L5f3+OvjLqO9u`Qhlj)CL!_lF zgaa%NB>P7r$eRQ*%4fJGFNPzB=%T(o2VgNqB9z5+HLu4oi1%p}!4j5@+wjk0U75x zz0=m!MA-QH-nmGGiz_;y2|kPmBZKb7d2~j{g<=QB5^6rDgx6qM;fy6~UW$<>?5#O= zeyAxG$E;D3FUGJ4KMaVb<)wY#TQtM9*q|nuGHBI=1*AYe>;;^)0BiBNzI6;NF!4Bo zALDhwP{UVq6yQjBxW~ygdEsX08rqB4fh)XNQ!ha~8dp6sJto?DaSPlY82UbtgNroc z$ad~Ww7-5x8e9)5Niu1VDED}`?PLU86zX=q)5++l?qs^1-(|L9Zs!<>v3oihEt7Um z8WSIm@?!{koyq3|a4BZK_&jSJ)v4ArU;8|ZQr8C4;An)@)Ir$CTj@Z{=Qj8d;;5i~ z`24=nJ^^l^J;G^a0UTX@1Fq0ceH-mB3+*(u%bEtMg$yhyCw-o{ze9XZ=SIE&j-Kq1cSscA;&Zya z2fDogE*(G_%$}?KamP!5OmiBtyVp?EitaTNOtjieHKo_1p27+lCCHvIS^=&H`(0ZQ zX*PvhdpLSO=OU}-*aB%Z&R~*C9_&;|OBc>Trc|)dUR|#9O|V2z`d#NcHD_9$Y2*gf zherjcsdYY^--BpBSaZxyEz{H}JGXNxjoCB5i=FT89$-@b@IGBP7HiaZ1Lpt_&VAX< zQ!^_0kp8`eN2^=!HdsTmkD5nD-6m*%)?7mb47vODU5%ROuBOi;y!sA(uEZOCPW8he zN8C$0kJ9!Bnmxj)Il|ku!bhdswPY!GgDCkS+ZqK(F}5>zlxR3_dpPnTpOW4=h1oE> z!Z83N@2q~=&W9bSZML|l9Ohy<&TQbPSv zo7@5Hhu3<`>QZOa5dM!3kHGCG!|VfaQXi;RwHrL)gm0X=yT4aLAP@O zZQXGhCHbQ{+Ff9(*P12$?y8faBI;K%*6n=sKI2J-xi%%DDLwft9E;lg__LDKUMl%u z3MTQ5X|#(2KDTx2T5s?1xpy2Ys7+^|BjWBg#g2R~EBY($YWn;>9fdwe_`}`fYux*& zSR0)_=ai(wPe4h~jtA+;#BQOzup3Y-+_|@%mPjR0 zPLVdisfPo7LHlAb@iF_~@_yTYrp6~VemUMB^Y)+pyzvWn_YuFt<{-zPuJ>|aMByNs zGltO|xU1Cxf=MJWoSX>BH?o*_@!{dCuf}&@@&qA!u7-^4v&k-;A~+g#0~>?Y9Fi|- zl*+WShh*Wp@{xD(F>}(*wfrQ0r{$`Knd;E>Rb)6*DrHAK%;z{ca$C5WN4{CgQg~Pl z5`u=hkzsl=>~WFkoVwq9#&=yE9~twTn8T9FIM1|tHCL(zE0~pBbDk1j`NC@@{78gZ z_JxzKURUm68$Q?OWpM?I1;Nl>m~~m29cnZv#mzJ4i+-hK2%aYMObD`Pk#pIk)ulyp zmSRQlbap@pbCz7rhmFXYuohnBlevX+zA1ZJxLh}xBWO;W&x)YDq^$|AyRJWh4^SC| z1`V0YgR|4gDWp8)(|kDB(+g_Awj=zw3YJvR5MGypYA`J!%24nSgo4P((rU~($Js1! zJ_~JMIGGm0*F}n;nlswxK4J)5e$V-qshpp-)iPuJ*1lY;(!TVoKP#WdwM&BebaxIP zDV*|Q%5eyfG+B}6VJUoK?@3dVB{?T*83_?@$VZaIEA zj^Fvd>5HM!N1f*PPv-aEF-P3LzjOTlyBgEvF@RAI!x%;Y9C_~KALlfq`TckG209na z#;RprSIff$DGrVDRGM##Pb-P=aeU<9$mfgk{yQ^7mc`ASrOBz3mnp@Fs7h6y5;tUJ zv~;mvKbzLSe|u@)liB~tK(V7?FCp@cTbTpZIL)) zWX(L6no?qnG6}}0_b+;BUhS0ge7hjLktOG37$Qa)5>p!Ll&82Y8Sbv%zHR%=>yPXB zop1hyefurr#~4cEuo0VM{1{t;T&KmQtQln`mdQ;{D}L-n#g8$zljOdA7HJ9hV&RbW z+jabyrA%S9mI0iQQ z`B~I;26l6?ZtF;O+LDg7LeRACjqbRYu?Ce5=Jn1zomJ}*nO|ldxZ-#6+e@s;M?V8U zT81mQt1z8y{EjY@Dd7}DxXV<`zdM!7Jk~56IK&vHx$mCkJBoBM6i*3Cv9cp8OqVUU zOnEsSCM$OcXV+_)ZtQxMpT&|d>nco;IakYMm|B=GGo_h0b9NH)R4tysSSe3F*AKE( zH*d3Mtq}HMK)x7pir)!=rN0uceo-<~N;ngX=o8`OOIkG3>__oCvZu#2W=pfvzId)- zHJwUN@jI-tM{&)bZO1Ng>GR6B44azOU6@^;2-_X_08!vP$M3`ewIMtrBZwKNvOy7o zNmRj|8o~ce3S$?MZF^1ViS}n^GDIr)N%1?i&gEb+4M%LT6(H;j45GvaW-JHRc3~ix zM4`^7J`r9UL&O#~O|iz+ar_Q*!6~Mo@-H&75h63;nYE>=PQsFp8D*zgnTM`PdPBHe zFRqnr0O$G`RiNk6m-<7~Ot|9GMvKARX&@nG%@^T`--$jl70OHvk9?Uo7FwAehFZdz zu6Ow%!Ve!6zXRaVuR56<7rM()t0*t4pzV^c+PSOg(PdOHtKI62lBv-O)IK%F0kq@* z-Okb-BIzvcH}GZkqNG))s!|0h%T~`&J`bieNx(2;LlElopncS1bY#_{=zW9~45PR* z+<*e$coQr=A?vp66H-_K?zZHrK)Rdimf{ch!-F?G=n6C0<61TqSS@W;{j(*ikC@_j zvMB`~6mU%@@jKmjMs5fLDopg7C;19+tZQXuEDX~7q>pjZ-xu-eEwMHO4i)Q#o9Y|k z1;S!#K9rr}cY-yVLNK`&4%{Lfe(=c#cz>Nj7}^vnoPt|nfx)hzRx}r}HL0LljPA9Y zL0b3d+ga|=d?S7*naft2zCDX1qp6kLa;QzH%nnL$hw(dO8C(K3b?v{JS|OGs`YWrI z_#IYU6U1aS(Z|NV)6Q{)HBURYLnaJWrlYL}q5vc@74{{g{ob?s7U8NZVIiE$sj+9> z2jNHUyq4Vb`F(oj+}X2|Dlda0C}aQZLLN8Ls`TOpnR{dPAVS2UiA-(iv5a1G;k z=uYmko?S9iU)M-ooMMNFm2O<69@r_uQ>_qeuiPI+uS;6EwmLG_9a*~9t`T1ScwDlX!ll@e!S|X0@@iTX>6V-T@3Y>SMfVI z1t=ZTm2P}q9htVG)z%$WpW7?QD%J=H?P*je%e}d8`TI)LEBUON&|>jcWz;8|O$rDo z7qoXgRr(jR6)bW&ywG?FQ$%XMRF%pk&9z|-id?Rvq!wolSai88O#BW3J9y+k{0^(? zuAhF+@9(_r@kfnMj>pH}{LA~}lMhWoWd6aI?;EzWj^ANdD8m;X`8c}o*2hlnxQ@dd zBa)t<;NemdSseD|{SB1rH{hF@;SMC43^#K!k;2nrhJf|^JKks{rMMIxKMnEszV3k1 zF)>?p5f?s=o07R^Eoy{HX0p1y&S#94rK)-Bh@(arCVuB?J^wJ`XWo6T{m$J|b0B`_ zDch47%kbMa?3}&2KIdn5&R<>JGLPdZ@RnC{xTE}@5gwy_<98T1y?m*B-x>3>f92Es z_w|#n^2!;@zvS=dT|W5OiNE-#HvIYB7y^9wP_{5tzazlq>LY*Sd%j!pKRaH(Kl@kr z^(VfEUufYaHFcQ2$9r<*ul!T*&yoH+{Jm}drR$&l?(FQ>etqzOeD>yF+m|oxeV?zM z@(Uggyy@mI(eA}_K+NgoB}y{`!Y#lH+Xlad%_eX!oTPbSJ|0K|O3)|pz%E}o_sT#2 ziDEzIcE~70r&HV^4Gg^Mb02o<hoiXAA9q!FY3P&KlZlitIBgh z{Fv?7=}aeO0U2NtHQS6QuEm4cxZ+Q&SWfJSH?effpV+$NPpsYZC*BVHiMI#-#M>i( zV(B%1`tT?G`S~ODb@DjP|Na|``tS5#Km9lN+xJ)WstKPl%p)J{@WIb}@_2Lkg?>Jf zAzjD^KCAwE*zaxIC+%k^e(ak+cfx+$T^FBUXw82`neE!|UE8PnpX2zkZ~v`*`w>4= z?_V=)j7IokT7Rhcv3h>O5;`?a)D;vS1US!H%ZB7{3Q5X;N|Bj!j+}B2^1Ml_6G3Jk zvz4qA^|EE{GVD^LFvU|?Sw5t+I1>2`;rsDpXaDx1{qFt#Q`5H{!8U&EWyO!ZoZ`oL zmh+*G8O_X})4OpurLpsr$ShNCx3x6k)IW2O&rv?n;^gol(}@}$2^aBWFq4#exDjY_HM=hIDYKx-`mIckaz0)E91uqP`|h$29R63qgH+wX~d5i(+(=} z43=|>;g+~7;>VJPk89S@x4+yv!04j5J4;tbb%R z1CjW~iO|GKFhav)_>M>$C-j{mbY^ckRV5#rem%NDosT<^5nc-;YQ@Oc zJSfa&_l1ni_#l9?ucMWd%M8+M>IDM2J=SoYN|BFU{O*S)aP8sY?9t(LDIPBv&*on6 z*9Uq!_rzUjc6^SRd+NnBf?D_uR7}j+9=~gx!|*xR!VEhw*T{UteNV1rUQ-j3em(n~ z370ZEK6k>>DTNzG3XU;({X+~3@?{#ZW7YRmu$ z@x0xqRtuaUbWY0o5&#_MC7;s?nCbe#AGj)9rMc+OggQ8jqam~eJrH`cmf@7%!#y1i zJVjNN7_MO8jPS;!&XSN3Uz8$v4O{^@(`YD0S3F>f z*N?9Wzc{-O;JBq+^E=(I9F*Z!X2%KJ8|}P18O-i<_uU=&YVI18w9lOdTeWkWC>;&( zwAPs&4B(v1RJ#5uAZpWjg<4BI|uW)`2*uIU~0xpTT2*q>PyXifgCj#CW*MPhXeKHbEvwoV!NUw1n2tFO#)FEJwC=W z*5kp}9qvXS;d60e{n8n|=IZV&9gU_BSku=927m!b;E$Tw?#LjrJpk~>>TRnRbz0d@ zN+Ukxx3)=7569f54t%(KxFLW;MHFN{Vn9^&;VdvqbOqOPu;nrp8+_8%PuXCXfwM#Z+95t0j*Ru9VV<~boLlc z74}Hmeyl_kMuDong2;!D9`6{HKc2ltHWC3oH5Ul4Nrw3Pj@~RwDJ~;mcHM0!Sn*21 zmCp<|9tirER;#-9E!Zk}BUDNK1gqYz{+ZexG%$*=&MF}_C!g&#LBr`v)3XEp=+FeF)m{E4E1>Chlejs9M9VBs_FIOY=P<#WQvUJJOG-G!0d zb*tv|K4=vx-4912r=f%HDPp*2MDIldHDT3*{(Ii(e_5qSgEXfjq9Z0DHd?xB5d zH_YUi9wh(aH6_ndEqzXZL!I?F4TpLxeJ)c&#JER6Hcz1)Q+xY_ct#m~9yK_PLj?lJ zTGYJSIk?m~0yZ@dxG+0br}qAP9BAj7+X;EKJ59o_lhZP>01L3uEd0o4=~zh3Y@CnI zDUFYFMvj3_&Hp;T;r^_*JwB=N`SJYoyMO=l#xE>;u%VF&`r3`fxFmy1il#HXJ~0cJ~jL6o-PR{G4A9@dXX4mmo)e7Bnz3H!ka|arAZbV z1g~M$X(7ngJwHdEBAC1(PQtr_#gt4#cjf|7RS7y%y z#xKCEqV5mP=XTS00U9J;WxBKQjfkGq-a8xF)j((Fox;((_%`?Z`RH zZLph5G-zEcW09JewF!MIv{uZl0y-H!SGPG+=om5D;@c0P;^ zsc@A%wBNrGrWf@8JedKeQ%4JkgNl7Dr7z{$?lh$gG&rj)|%%LTp=_8*f zVKr_O5Eo1(EiNbFDOLotboIl^%X|js`(?v6z}Gf9p%q5Zxu9 zo2Bw4Z4#dJspg?2U!_B6^-_=J9*U0{zxaOCH~+zMedjoS?5F?X=Z#;s>u1aNFLLKU zj^A-F6zgZ3-+yv-idu)nx}@(-=t`8jpG8! zjg)qH;kvUQMz-9XVr|GSYuAfoNT?;%BP`G4q&b%W>7yp#iD}1}_w{P2iH9p+g zANL>a+t)o%Q~X#0#$3qF`#-aq>xynZu7!G%MbTue^iCNhqNd&(KbGQ_$!C1mPdd58 zT70JERx(Tsi$;oyWj!_;Rw>o9R9G+abo#`QlU@70Yx|V_Tz_20kA3?e@7wRIXTARI z`#%@)WA*!EB1zCN?6sYaCD7oH(Y5buIVJ^vMl|wSl`ZD~u z^KITE>fQ!~zp9mdgqyi#U~TY{u^tg!)P=nANrYJ)^7xZbH;rmndsQ`?wB4+JXuG9eMMq1IUZ{?mjj`v)v; zeY@cVtO}8_u|(hxg}nLbn0SU(rQ#LSV*?ZInf%YpO&&e?mY$roKFpSxJt;R-QMsL=p-}f%w%6Ky5OC@8EalL{QHQQCS&HB>W#@bYaQStV;J}R~alM_4T00 zyyR*7&AVgOB_>Hbrz&wR&SysoNiK=n*sYwBA~M$4Yv(PTHF!;@^D2Io;TjB=>0cPY2;17xbXoMkdGlRujvuS8zHAjGM}2dbw9;LViZfF`n6mLe0qHWd zi+f<$4uDwqD;&j-l`bw8vZ{twdT@X`MueNf>(`P>gY=q7v>t*z$gb|y`o-+Xw!WIq z`d0k|Ig+w5tlfj~>fw4Lh`!}URr@3g-u4Xmd;m_hX(gCm7cMk z@7817KQwWWy%27HkQ#ijRfq%g{V){(z=yX^*}yh zl!(+3{p6PVr5=jyeAL;UW-N94Q7f1sn~L2VKjsqkXa4?Ek3UY0kH7t|_s1tpUA*`6 z5%FWLqB?IdBEjgN7x82L4o;r!$#5cmOcMXOpK?ZVo)&pJ;Awz!x;ua`iF79!GGmaP znISFW$GEjme3E%)SW^=&8OV^^*Meb-cz^uZ*?;qS_Iu)QEU`%b{A+%I=_PG~uo>gW zuAcL=KyGOyY>Z!Fcy&|pV=wQhfn)jug9mqOJO5-H#?L=dKJi~!a<{zk9>3e=gO8o~ zi@&hpPux^}C|j6%fBe{A^WT18eB5-{tv(2u;>SFlKAr1B^Ka6PAA7fwe;hyd_P_f) z|6vE;=fWfhujP39ocJ*>0Q1YIOf7-9oYMrdeO`E8zG99B54w$js~nv+bB4|QBHb%T zh}=8spCgWZY66n<>0^fJXc9P#b z-X4q>ySjbxoSz+g!S}Q0MCkEMPe=lBW%PwK((_l>Y&O0+fA(UEAA8&K3ya6`WA9Gr z*C?J~HJ!{Rdhgi}9Y1A#jh}n_-J*T%#E-pe`nEF0ff51fw4uGDz^bQ(ZN?MVKXm=4 z_^01n)PJY{`sRPw$LCiG9?Pt$O%gNM^XD_2jD-1n3O1XQ#@VxK+v9Ti-OYZP^bzOJ z=uA$0((#<2olai$*Ta7A+CFJNJMm-R{*Nc@ms#oQ@DcU-L!V{WerNyF0)J=6@nhdN zecO!k`(xhX(*!|ZP3}9BpP)`H%ekQP^=yWWab(egzr5j&iFU&F`6;G8ffFe_B9YSv zrJP?fqr$obq@+s%A7=1&!->qNB6I{*HYX_1moNz*F6#u2RZ3QT!nRIK@ju-2zer)Y zYri-D^U{9Dzd!cV|K$Y!VmXXPYgGfy#q7}~C)m&DJ!CpWa>kVtCvGk;xi!Ba)*EA= zpEL94Z7M=1k^!q8GMCfFk+%1#U&`ETBzXnQq&?B{Kty8j)=kG*aB zz~86FkDdLmOaC0lkG=W*eg6!3r@p^Be|~d=iEeK2+|A7yvtYMp4x#X8BEJYKfMDAF zeF%V+SyQZX2gWFIeSJ8DaOVDL1^8 z^no@^Ak*{bfL1lm#OayiX`l!coc;uH5F!XHT!jFBm~>wgD5myo#f1wcuCK9yxAG>i zp}GjSx7Z*A`EiD^bKv{&j9k1RKvpqW6CT+me)rm9WFnsGFiNn2{O*=|rdVozb7N@3 zgSJS$^+rCow=h7b*JlKm5pd3PM%6cGu3F(4(xO$)XfBteU8^K#(b)%EiWTAd%;hJl zN~pWP1XTG_K^HHI;7^AXfep^WBF&LSsrdKRD+~tKtS@i25m&T4exir7;Hm(Jc8t0K z!#zzFK?S(RmDLGnSYZfpb=!c0@JMC|L4l)u8oV75kZSk{8bSbgE64@&K37-Fsm9&x znZGBtJ}{%8W=A!he0Gl+12}$Dq^$e+IszJ3APj}_X+NM9fP1h@NzVj+1hpNZ>fT0| zym04+EY>`=Y$fvwF9-K)lkS3Qy6UZDh#56G-2SCGQ9Q9CBRP|Ef z(JBPaeE!`M(v5_WGh-LX0+(nt6R@~2gF$qm=JspMhlw1TE>;Tz58!|~p36%PP(>nT z#0&YbVj@B~6P?%q8CorsrAfv(bSIh}<6u9mVAp~<0i6Aj6I|7o%z$HCzAf`$N5+jN zpbi*biy?k7t?-BNs75_r6SI@9Z-Fa+wFWNO9wQ@4Yt+Y{2GRZ_Eu6ji;z3vi2h3-6 zpA(oROILv`>11NgB>_y@dJqBAPzlB09Tix&2mwI|Mp04oh}`sWB8RXDEfm0wj;wHn z##loFGDg?;P(2(WtX7rJ%?vozi5ek*XF4}?prtf*?(+wqVk1hSAB z0yDpL7U5A6XFpQHvdp|&aq$P>==W{ToV|RB?Wu3KqqIy6uT4=c($f3@h}we}IIBIE zG(6rrVwhGHn{d^)R0zS9fpQAxL)Z~VY@a^IABdtnihHvTo*|;C!KGv&&G0k15FcX} zW790#Szf;e)b_i5%Rd87+(e96!MDbST2|rS>Ad0QlUr}!qsSav!9$(UEXH1#UF-%q z!wY#}xvR7gyekxEdN_i(Vi4^erlDBTuD68rliZHEixc!zwk6QdUVsDD(^2pVXYdRm zoC!uE3k0%wyFe_#KAN+bVhtO!fm_AY=1o~jr1_^r0LSu5_hBv>Py$_pD&{0B?;%y#FBJf~z<*xVok0dHkTVOrc9aXuw~9W7?btf&!e~I`HXx9@R7W;L6yyx*6u)6m$DSgyiM` zXF*dwY)q!VGQz%O7^g+m;Fk&pW>G_L;<*4WNHm|HeZc9w!!h9SQLNJUT4TZrlNtm= z*fDm!buA_?*P2EwTLel#lhh)Iz=!@cO;`p6GtgvO9`o`r7K;X40JEzCt2`$Tb3IU& zPwxAZ@Sh-U(u#U_i$5HG(&&s{ADaIi@ni3Ld{X11Sd~wKS=3zNwk%9+qr)G;_o(u&i0wq#1gmCE+r263Ne?Q|gqeXu|nPTL0)a|g* z1FHr;H0J=jnb2uP-4L<|BE@EcXFMZxv2m6(G<3jyb&FC!2!1(ayAaEb(>{eGQ{9AX^baw)+It%Q0Ed#E2<^tEIBJEvxO$J zIdYCk!gL_4S*7emSZLaWnRB>sz}U?%S-eG5S_rTTnw(lfDp?v$JgenWv*R2x+t>&G zNLvzeNfzx4f%}tV{=O{a@I=7i{ZK%1A6(7?INU+zPHRE~1bUTd{N*xPP7*>LT++%M z4IrE}&tjn*s5!V2IfbwpCBc=W$bqX%(Ug1~)U=9eAx0DocShL)+_=mnT3{v|fdH8~ zYydZ*B;Fc_BV26=!;J%pY~~U&bix*;XE>l860GGa#3yKxsP=iY{H?F2j;d6vUsNMDDjAAq3mQWdhOFbk2 zD6!^2|Eg6XF@VDmuxbWosmtWcT`FlCLa4>6+Aq~#0j`W_2as+lpb1{=pM$GK&n0!h zr_Ks`>Bt6Q0XRBKn%bSL3W++Zx;|aO>m9g^%lvr-+|xc9jzX(;S$lB49B0(L9ZJnN zxQeYN1{rt*II2JA3v#qL*3F@9#UpAgnac>DFFn&>L1);{PO(NIpbIy-)}R6B#I{X5 ztT=dv7{+eFP&z1|1H8=|)PzG=oW1~}Ck-P3AFYT^NUPDw=q;Td7wIw*zmEc(jzUG@6NywRA zol5X773L~=0SUujU*^G2Sv#MGIsk6j)YO1^b4mu(uxeZdKItMucz76qE5alBDC?Yi z%H|S%BPhi<^92! znLVKEXS^DN2O1LjPcx?t)7%+^&@cGL*|Gk}Gc)THP5$OJGaWy9L9G_8NP{fc%RKlbg{`}XDSyJs(6_@BTkDpBWka(?b*9V>l0 zlE|yKIr5*(bC%43^Am4xPvDQb@}_2A)toa_=nsnZCj_+p5MeHx z%=6_adGt;Ff4EPC(_mNtSB=y%+RR$b)b|rMW#`Kj+dITU$rn4%#-7h+Y8ad(%y#}* zv+pVN|65wB6%z+_bG33AH8%d3%{k+A&m=QMPgW)lJxTpB6JqDtu(R1uTK6PjwsW$~ ztbR4^7bO>fn>wI}`q*+xZWQ#8fqv$=L=pQ7sjm zO){U&#gcDRcJAs=Rxm(6N&PVsHfEn~b<(;sVdIb4?8!1;{+R9erEXs=@W~eVnDtZV zAI|QUix6Q zjUPLESmOUUe(YV-&H5>y#E-eV-}Ob~#}aj7$OrLb_{k4f1^}=_-vCKGnQ#DO$)@-* zrqrBFqnH!!IXB?awEC-aM}Hu@Q6f@~QD- zmv`X*{`s?)EO7ZUCx0OV7e71a-7-(lpFVlc+#x{{&-rx{rUq#fulOyJ+e@r{q3?~K zde`y`U&rxdXRr75`?182z3cj={yXtwXFu7m|Boep>|NI{_222gzWpO7>dyW&k`nDl|#rEjM=a*aG zUk&cN_IvY}FYLDyKlanVVjq9Rk7do}D1PjG6+dQ})`#QA3_s&z{8%zC!@Wq6lpryK zyTAv>oN#3Mr$|%Ebb@z1&;MfRk^c||L#cdwomonzy00W z*>A7c$NtKF`?3CDmACO@E`&i)qPJ9*rVZQR>!*-v{pd;Ys^pR(U^{MfsV{XR8*?9E@b#P@Oh*xSE$-#^>_VtWn# zudngcHG2)uvy{WZrQF1n;k?8^B#mA0EN9;WI~I?zlfe;1=ls2$!GTvtGN9Ss~>~!yWGkV%djZW2i00Jcq>_Ec%Dw&yKhe_#U_5IhMi=z@P+s z(AjzJF5lj_O#QN_m`&I0gw2-g#GYC2>;~?g#D{wpZZ9v1A7iD9NU|xO3Wd~)cEZ}L zSy-Dwkeh}QXNE$9;O2u6Sk^LD$KCA~qtfj5_VKR>?2$LH?2`4<8?^GF&`TG@V2}d@ zcmASeE)&Y4iP>9@+I)9lSz@O~3HKCdGdWrENuZ1SrZq?(LSPen?>!DR!flsGiyCwa zKC5zx_U>sY{d_Zm>K+rOz%qP+-yTyB^4++x-7UIsAzsNf{F1@0W@BqEF2EXFAKkb> zA4bK*8U{-=V&ccx0pj*e2;fAj&6O9%bYPh!@Of~RsHcR`Ky`~dhHx7LcDA1U8VH%W zyuZV`ZhHsg=-?)v!WA2+DFZ-~MnA%4$1eO^;L2-8k#FyZy8z(v?8Y7of@SZF&T>!@(^bk6nN9*2_Muy-D zu6_czJ9n9PbQ#SsA0ip4a_#;n$^8$o=Rix*wP_?U%cc8mpoTzN5D|i}&niNCkPuSy z1ahS2X#p`9gz}{f45>q|1p2F6-Cc(Sml(p3m@+~V*=aPzCE{~&6<}g^V#tC-T4Q>y z#C2L(92#6jcoZUwo~FVDINP9v^d$%%fJ>N|+9wS-1aQ=xAN&z;yempWxXsB(GUBuR zB^U{??=VG9DjFv-9Q+nnFd4JIPK0bukwGIKW{-7efW*_$v0!z*jvJc>e?Ckjo;0$YM zSdj(@6X!8{xTes<*~XNi27%9fh-v{yqaF6_M4rIFCHt-v$zfv>`VviyZ-c*EtI&W$ zR04lOAP%Ge2Lrf>FiN0iER@h4gm-Lf)L_5Wy;O8bI1ewbDm938GO&!yiF)E*)}bea zLlNhrk{!;&WqQKYJU+?|C<;YMezqz>Djh#Y8)=8;ewo0TWKPUcN)W-tEmgoJ;s;}P zxC}<1h5=!P+F+DKgONcmP#L$F5r>1~1eR$v4hgoc7%)-7?-zP2H#8+O=D@N8hWP*3 zdlMkrmh3F=^t*M3s=77aYDos$Tx>IgthO5vV4GqTMlI38&qg-W6$p@++=QD30fGVp z7GN-fZU+QIJVqlk$jw@GAE7!^_Rjbm1Of}PocsUZWkOX&*Vd4%XQX_(h3#f@1gSFL04Um_%U}mLk)oSd_eWH?WW^u!5LW$09qOh2Jrk~`V zE!D7aO>dA&Ap-9MO;nV@R&L@^CmR4nr3ROIHgR>3d=$B>uuTQ2xdXs=l#HU6?YJc! zKt3vwHG-pGZuFPNDbc9R6=(p^q-vCzkr7|W2YoN{%H54~x+1ITgY_`6XBYQF={B)(8$S0ptvTMk>K2C2y*M>W?|Yiy|1#U_7c`8EeHQmxrMX z#f5CcBrw(2wGs7F>WnCa8?EUiAZ0=Wfj05pP2 zVOoi()lkV(1d|~+5}(plZ^UW#HB6Xobibu5=LkO4!{KD!r3f8;=pxCQ00^ql25#fz zm$swlBi+(O0woryF12M5Q~|XW8GT+gNhTmq=`?Ce!$}Ub2{2I}+tV!twXa+={2lf47uEzl_-A>t{)V#1%XL>dwT z1>lN(}t#?4=JAZ7qG$)*6;#D<`NG7`EKQxlKpJBa!wDv}|!BJhA)@YkT- zM7phPBfx1NxdC7&HiS@r3=7?@C`KiMZd3v&t({m6QBVO9*6wN-%;^l)t(c_AQldzt zV+aMf0We8o;#kqgG|?Xu!0eVx`oa`zbL)W7Z395C0ZN`LM3ol+Qw&S4X?RJoP?)L3 zUobf)9wZLdNv`yq=#$9+D$*$+<)8vo5di8;q{=GEjdK;nY4p~fkuN+>3> zTk5aXx!FHM8xV-)=v^9Chq34z_KvKPUg?iXDk%7LYO=v$c1~G-E91Q?8rqN2FQ=*XsjEY$+!KV6SsGJI*PQm>^aBG#)@K^NQDusla zsr7K(njCbDCs$R!mA?SMeFG$ur0W=(&J7c8qK^2;>6Cl|NNoksykt@z;*Xbij6{Ddie;gu>er$$wyr8u4BW0;uSS9nnqI-i*gwLIPS#zo!3KH zwN0@MQ|h;(YFcBeaLFBbss0$;?LmKxG^TxGqgdQ#fP^3~hlgC(-jp^o3Vm8s){L*T z#?&)I_e@PP7cT9&$@=9R@q5|UC$+!x`qf;2?8D#vcI%h6f0lhO#s;=jc<3tGLtN7z zV@<-un4UmN$oY#i{jnT{sEXK)^~a1TREhz1AN&*eZob1bWckio6f600X~p0Mse)NL zr*-`?*CL@};;GpYWM(|P>qk5oI9%5sTYdI)eYhYW*WkV0`WN{mwRiZjhe08x z21J1iwD|^vA{K9cgetR!Xrm1QiL=aQz}pS=$124kcqLSMD>EQs<42zA<&-Lq{utZY zs~n07$qL1ty3f`ROIG56js@|j|Pb*B;QZTI~&hSOY4+pl3$*+ml#EYj@uG zCh-l|kCQ_ZA2r0rVvV^9Gc}BFyG(%kwHpA|S_SDvB9q~Mi zYAf15p@3v^iQvW(Jy};E-AakCUh;c_dzt>&I@%}ov94G)Bi6ANKB08AHSuJ3Y#L+# zJeDIAHkM-qjKLE9=p}%+`;fX7B_9vK4DBPXX4oBZx)m@BJBIjpl;b{)dklQD!N5)V z59gmVUEgi4kKg@+me(iOA>v+ttn|k&Zi&AKJ8rigouEI1y4d0AJ{K>cCvzD6G43JT zeS|_8_m8n2_QnzR&t&rKBGHI+AFE;OU;VLv`HJb!^~XN@Kb_FWg8s$#Z}3hJuc|-x z#x(xb!uog?e^2MG^vBMB@T7dJP5rUe=iZY3y?@L*Pu#|y=#TAt|Jb7bSigU)?jo!E z$GQ?2vAE9xbAtzCzMGbEN4hpU4&@2XSu>Qo_HNSL5jy+cmHybpE%CRr!%Ay zT<;%Secq(}3;JW{4L&dbCyV~r>hmY%U+BNSslhkO-}T4d9=b_yMK0`_rq7!GNk4z> z{D(~Nx1c}v?)Mga1Aq2@k^zhD`EGyO3-KagpOqyNNP z-KNqUYi||FR3+zjOMY~g_$dSPg4(}f2Pk@C3U^z$Ai6LJ1;joL z2J*w380t-g#>R!R$(ugQf8xQ+UXJ%@#=jtb1!58t!y^7J8-5CZAG(_BkA3)uF5~YV zlo)(Oe~kFaErYJfl>S(!d-nav7arKeW53D!+xq=uWKbNpi^xz?_C_*`t~i%+6d2eh zWs97oh{W=-+3N;wQ?jUAx;Fka9B^THxxiTG-Sjidd61UN$M zMz7c|dqc;^(I2C&DWRvT1J|4&;QMK(C#0Kw(yl+oZ4!xj)F1QqAVPea*Ow@R+f*zp zW<-p+3aBphQ1-ZqzBZxc>>r=1KX#!07(1liM8@VFRcoY>B4TDue+)pfrfiUaLzW8= zWi-wpno)lY6%Y$n;`{7_6IJ%X$RtAc?f$U{lPlaor0jPkg1pclLr7OOiCBY4OlmYB zlnl;-Q-qSe>Qt6L*0)zTvs5($L#Haq4IZOn}q%o^Mc1(iEGBo`$ zB2f07COp$0qa=ze&~&+59La}VOcte#((?fac!^MTBRCQd!5w*(6vWZ4gNoXU1V;}- zQ&wt>NKrD10JV4M#Etgf)p<}-AOf^;@Q1)Xf(`9rGHycQE*Zt+5!Y^LM`T`#MmoDL ziyH19Yd4%k(4R~7lyar}L0E!n+V&zY|#-vt4WY7sQ zr7Ohp#Z+nSq+vIL!(S1cckQIDT0o*oUxFzLHZ5^-6}lgKpYpe?KbBNbG*IZvrqQ%^ zq@hBI2&+y;Br<*?n`kxCbn%|f$i#6wRb3EGtzDoXjE(}ip+SEPVvtS=L32)|)CPTt zx-3z^Kwze+Q$!sqB~KB866=T|pN`CGv@RRLNp)r@;ymVnG|oyTXR1HOPy?EBJ5LcD zM42S)^&~i(Jw{)xhg0KGfZlLR&qegse#(IgBL31_OH?(0}Z5xm%74_NJl-N=)t9jOC1GQC*q2TqD*Kt7IrNvWJ2yFIO0?4 zO|-Xp2>|rW?d$SHiLrHLIBe+o;E#Bv2=JE~4=-l|R9RXj5kQk@Z%d+?skFqEr>n5# z#ePzp6#=IW7=vEs+<5C_{fJEDnlHAsWchzAojZ z_Gu)RoV-MTESHsm={ArOk?KZxjv`oUx(JTk765`n=R6nQA;nh&VqS{~N!$hopdAj7 zTtOvCGDB9VGxP!tHQ7FtzHHxQ1LTPSGLonDA=T0udqNvIT_B2*8Hw$TpjblWQpeH( zvofN;7zH#%+#8Z^du04gIU z`V8Qp0oBE0Y0{EqxahbwEKNL0kzW0k-pVazglmC42lW(_v zfqz)*V^92Grs-q z#f6!diZcLs6@V2MfLKXL6K&BD9l#*r^Z~I|8>y1agm4{<8GxzPOI8CetOb=dWzxb# z$9iDO$}3jG-UQ%61b@6(Y_&_s5>+BNpqv4aPdgpF^cS-%&i#18JePzvUIZK5$bGYp zra)uuuQ4hn11$upanacmQf1hX$VxfF`iPi%)0H5HWs*iBr(IW%DR5mH7t}zLmbWS* zM~)Zb%gae&xe)^WvARk{@pw#>5!|Z{!DNk|Tdqo$4*li8FTm8Mue#lM0T6#6G{F#k zXCO2zJwC5#R3vUyfPLQbJ3&7M;`)NlmxNsmu zUQCv;n}Z(00=!iFKRU zsXVih;6in!Ng;6+KvTss5}eu)WTqF|N+D}0QC^*Bnp>bLNAs6jO^9Zy2ng0lg;>1W zhUyOGv=^C8chmYNZ~=jY{>Y1}Pc88vJM=;t$>az~*7~c3kl@GxAwqCwqtZ?E4X{pd zRyH_D1WN>$$_s!jm)J>;YYadUoJA#l36~Ecb6;47R6UnlkJ6O4a$);~aukv<;7AM&gnI|!0mn*WjIhUC$yKPr)({~EBE$o~avZ$jvV^~j zhM$6M>W{tuearYme+-%-kLr(+RArVjMSsy7$&dkp3N3D`v+A<&N5Cp~VlbzkKJ6wq z`eVEyFcE-zw!+vohgPxj2*RCrh)i=?aVaVpKxC;R89ZR9P-G)H^quVu-xd5NZE%i1 z`4g87KLy+5PprOt3;xhwoZdf1M%pu)K*yS5+2CacpjgweqqRG4e8KxC?n&a*KvM*x zn%Xm(;w7aFXe(gmWwiDvH@=A~ui$wMabvU(wJ_p2VMpsmqHha_vCzpW&7?hJ##0Vj zLVHG2Jdf7VGz0XI8{bs-hU=$-Lnv&-_=xri5^cYW0PASmCDddkox^|8UXP zAGJQ&Tpz#x=Ps{Lu0z1R{#facUEUIZ4|d?xpboS1+HUm6yl?C=7m}ep^8oc2FC$QY z%;m5g8@5mpEmeQ)^jJZ}L4WMCf8MLr-&}v}XSVR6j|KgUUpR~ZRrSZNrtvT6kF742 z^Z#1zAA`w|+sC+*3f7hPkGX90xsLvYd;i!)i@)f9Q-AFI=P##k8ZUdmLtP!?7I^88 zdC!;@^~aiG8QM=z_L{r9+}=fI0G|G3C;zFIa@B@Onb>;bj8UdrxyqTJTFNRj6o`NB z0_2H#OCjz;f9zeveR)g#?QnZNM7{Icj<<_(*BDA;C{H4l!HxpFNR$qcJm7X1j-T4I zY0S!DeR}`c`7fyYtNPv4AG>JqS#b5o`ptHO>R1eOk6Y|6LtM5wF_a_Vl+rvZSS>?C zDI}RJO7Dnk#e3A*Q9wt|kMc_1orkPhXj$19%kb&^`+P=yw!Vk*|F@I!FX)e5H26HC z1^uxDu0TNk=w{C+y8MIw(=VKqf1&?+_b*y*-~Ik9`|b#qg)&P2=?twC8cAw{-E2+B04u18FeB5Q@cNlJ7qwlBKQ!TY4Av~So1^}z5~>((iIrDfPiI?CB1+j(g>av zQo)T+q*FAhgX4>hX{{Vx%^o#$-x`==7oe3=hU7i|TFSBZF&SU!4x~vYI|O$loB9Zv z@`?y_nnSF?By{EVK1GSLU5P4E`ihT8O(9Xm_aU=9@tiV-u1vZEFcdCqa%rn6bRrG; zL|(roPCz?eP!gpPtYCx0?L1n8Ac6EvX#t3OH+`E(dj}kkwOXWVl9+bphT)df>Qvy z)uo*g^7Y)ZhFb(!y24%ERW!Xn>lxBuG>sG$@_~>fy*#;)ugEGyn9E^=pfn=7Gb<+{ z(p8j!wn|i%yc0-z5LLZ8c7vBt39l42XovcuyWm&p=<3)jw$j@sShO`3 z3C=DEqHT1Q+G-scZXqt3IGMDI?0_gn(alY6mno`;2#sp0jzXcIf&Z?7KsnN5HiApZ zrJd-k-xf-Yl2KyL{a#}T0P2u*f@{}gQG@h3XfvtMlV`kQDi?&NqPEk%TG>t>&G0Mir3m^(^Y8)F>gWYo1(%)HDUj#50aeFF^FO zLg*<>E73>{Bu>>vyDT->a#!_H`cKphzW_Gr%63Pd1XO|!shC3TsR+fds6n!u9*Hhe z&yaG4{AX$@#e`OtY2YtCD++Bf;a1TT0)?1{-3n{sXbTlGP2LcuY$r?$Xxdw$gHRpx zrv4Kdrb|=*i5vzc5RI9n5Hy3(WTQl)hyENo2x@v{gZLn7D>}>R(tonv=sO)^Iv^7? zD5v!=t*auImSpcirV4lILC8x84mt>aL2X?>Y5Jwei79k70wBFqff(v^1=RkQ@j+p^=Qaat752E|i!dbxLq%LaI&c zrhYrxPoNDdYPfYVV-!dXHIWmDOVZ1esTv_uwQauE0HBHroP@gQV`60!qY2wY-X0Ay{- zV%PO9OBRym#k|@}v%3;BnRWCs1)!UhNH_GK z8h}VCrC!K5%1E&uaLW%lk1(%O9`a0vN3AD^L{^vq@M_lPg_-pjB5u5<`cKVY1%o*u zGU*Xrs6^JfOiq!J)5gs{w*XoZ*5<~K0GuOg)eGX-cEJTOL(C#WP) zACWyJ0;PTxl`bjiSjiQmTmXb^CaxE!BQHP;rlO1T*LLJ<0Nk3F86c`L&`2fT^+l+4 zBIlK;z*7lz$7)oSh76hlRMv(xi4?q)d47hL z7$cje$XYj(R>~0}?0AXEDT+eVEkxY9mli?fr7J!qr%5t2X=+K5ybyxQ=?N*e?T}2q z2a{DRRGghLa0U1 z2zVfdA*u-=yF)9|hv$Ms~>Q0O%P{cE=Dsf>Ma7s6woXKAxlf z5rX4%jF3QTpY@+L&C9_QQxQ@#G0_?T)LsEUN@qK*QEWdIM29~|^ z5?n`vMKOio@Qgn-V6bAUj2FQbfq)^%q7hu9s~Rt#I<8h< zSKS=M5UK;Gn53&3IctP%^k`30V23+5NJpV0I{BFv3z5BN= zuMgib=s!^cwlR1Q21HrwhXi;1@K6Ta%TS&xV7+mt=mRo_LSPs`NN;219iF=Hmx#^I zLREwnKcKP>@o3;UnU_Ymgujc1pMovuKmE2X_(OlEkU{CIh=Tzkr2!K~6L=^CAg&sF zoGZvcAyy*6z`G0;5YISPDBg<^hR9ylTn79RLs1fuSEz~*_W~7CNfhf#o+bQUHvAN9 zlm0&Z+qdBFHG7axt!IiqOaCs5|359`=Q_+h-~zJUgX0ItPwgF?Jl@%PwEOfB@d||q z5e%S*gCD~=E_)nPcLX^)Boghibl?+dn9~`vy zT0x{I4rAcQ)~z(P^XWEfs<_Pkx> z2QPltr2Gs0*ZY6>GJSUW!3AN#1*a}P_!7{ai~GGKt)87%`!3EuFB^WU{cOq)e)#t+ z<4^fP1^Xg5NFP`7gJh`W2P4?VTpl68>95HTX8yiaey~gVDeJd4$`8u$=V#YRZ)%5% zfk>LWj)Q2S22wYMgwoKh7|0}Du8|mFwi2oXCc^kPDwC+R?5^>-h`-hEozUOvLsxV8 z!Eb8td8=~$^NR9=tTzVvLGW!6!8&Uj2Ab3ZBL`-3&Dxly3%QmN2#}-Ic^pe{@z@8- zEPEPXY$&kGYM`z1gB-1{pJIc1UX9xULxir(`hv<$po%c;1Xf>wU=Lwf!=Lo#SpL~x zJ;mRq{NQ=Jy5 zlHdVpuq9+JLYWB>06lItmf3pDfy)tUn#m6ez#n^)wF}Mp>73ZN$M%kut?0V@sO<7~ z`N14=44@>m-WfSBI(OJcU4AgT#%=#Nd;vrpCSro@)V8g85l{ekK?$b(AlJk^q)9{? zkf!A_y2%gH(x9p)CP)q-hn$}-K|(`aez2dPt~?l0J&JFz_B%LWo7P1?uL7JT0`H$z z)(rs5ao6fV^MdCVS()Mdba2`MZV7|1F8>kf8U@90b0gnZd*HgTo$S8wvGNNeAkn+E zE`mKj9V&KSM;gfnoq`jsvc{DBC8xHKIly@t83JGvMNW@$FwJ>dA~Cix;sdaHC)5;w z@H^c;ALR$(=S7?gzL=5+FsZe29w5BvC!Sg@ACuRyqJAgJ53*sjy95C{QnnDGtS}M>2SjipjUc{38uT)uHJEU4SEvjnWJDSC$3`3c#~hQ6)K+8~pu`Y5 z-OuS6E#D3K$kZtLqO1VX^3++alfC_%w<|<}1*)Wk9VlSBFtdPXMW1%{-331Q=f^vJFyj{pSj3+JbkB~aYt2RVmOx}sqAD!fMd z!SVd`pc5}(!!luYM-FUIe52x30ObtvmqNS0#>fU+&B|*8Xa1Ccatx9cTm&b!i~xEm zVxTaQAB039#UdnytMI4S5)%w%1sZV?0Cix$UZBo1nmBbH{52$kmq?#+(wpVwHDWhN z42?HaJX6Y8BixpfZ^{oUutGLGhAZ+rq=9KhaBP|>>O$5+glVA;B6y~q@(loKCz!k( z)l+~*aFTRAcuQCjlSYLkK?#oepf zgR+?)q_p(=TJt2y5FCYR9R)D*spM%2nA!^3k+*6z)X?t8B*7)Nyr?=$#KXu*@hoE- zSK}H0ui!Qq2t5-=`c4SFL=g#_ZZl$E8H6M8iiBVjEKFE>m8tw-@=W9r69f&`Uj?hu zlC$*6L3-v=twoV2#JB2~6b&DM{o9(|tw6u%U!HVoNOYgJPE^Nz?Gaeky_x zN?nS8L4MES5*>%b%_M&H~GO390(W*E`obzj|YJJ z_tuYOLH-hb0F7epZAY1Ey|gY;N~~KbNF(B>WI;@W2-2{^eGD5RTeH;t>23`(!y6QC z2J$gv5nKsyLXMe?<)HgaqBCSQ97u_cxTXZx>YS*k-;`BklLIW7???hbiQIa_6tYco z#h=}AsD!eG!azePks`!o2uQ)15B>thC2351(NpDI8-OC$q4gfSK0ep+FT4EUMO&ZL z`h1grdilTIa{c1@>CB~>#WR;J`N6Oqk>Sgp+wfw#712Sa@A1b(km;zi)&MX$A)8n? z0ETeUIRczRGm^6m_0U6x_*k=ajFp!&Y+j=Yt09`(Xwu67P#Us(Sp)Q_aBQi$ZlU;O zjJ1bSdCs>f6C2}Z)>2_DFNE#@moZumQKlB6Tg~PoKz#_N$}IjORwYZJtn4)^$H#1E z6b{r2(;VE^0Tov9KSE4}1D62tG6KkRLgG&o6z5_=Oz(*>pL04*j3=W>0SKi55z2A49eD^nBXOfuU8n*GRpLf@ z9AZH@!4R5CGN;QA;-*LfQ8KE_|4>4K5X`#@AT&}7Wfc&?l~`lyP(m0%`Rh?J?=i#x zhzV*b#)$`=62inQ2Q4p7AHX1Pn#|AusMH#OY1IJ0l&F$}F&oLf)+(E%SvA9)+>sn> z%h$lNO zUA?qOo%|CP8O82aGG|yvKsPai)nBX;5Q>8=zof<&woY|NlZf}>$U3^6&$ zEV^p6(X5aZ^S}^DsLl`-Ou9nOrUwfp#tknaOsgW4h?gXkZY1p^RgtP?Dm_vOC>jVZ z6jl{){YpOg#8h=TkmCkjHA=+iNO0gieGki%fyRsAl!nGD8KMS^J|yj6xXvC1}iHJ?;rAY%)Wo2ywtJ3LN+zNoT3j*qo_^Qs8 zeLZ_86QQc^l8mK?qce|}{u&Z5Dj7*H^b%3iqCc~t=fsy>g)kd6flf&8&>VD%O*3d> zJQ86MT*$0-OLAGIzYyFJR2KpnIhRVx75!>aB?B>+qnZ5RtlW=IWfz`P9kw7#zQj!8`lD*-Txy68$12`OUO(;x?9 z^oDLq^Wj#s0wbY#+1jiG@m z?-zpOC1G}nX8XDV;1)oWy_S5W@kVf!ZaTM&x&vMHaheP%^e3@u>e8rBbVC-iG5gR&KkM9(g_4BNx8N6Pm89$Ry4&>eJ6aF3_U4}Q%nrazY- z{Fg0!Xk$VCX6NhH%lE4CgD+b6qP63lr2OB`4z$QHyaTf(<@KI(5xAD>9D92N5EXKTy zSiXIL0%w%TnSy1JzvW{fr|q)$4wRaYS%9D|1$wjcgFW8!uP^*wzUMQ)#H2pPbN=gB ztM~rNO87-{f8M^AKcxI!{iymr|Izim{KfTM{nB;&iw3{=(&pamt1mD6`F~U2H(Gq> zzr6YT+y-yotIu!#+V@5KK5yU4&ujjFM15E7d*1T9`pR;@{K4(}-uC_5?@GBZes6tk zmp-5M#&?MOWy4Ro&fe#L`#di1`v>)X&;ME9PyeU&{fcj_@5jEWzVG`N_5Fr_Rp0mg z>-v8BJHF4#=PMrM`{X?bWsl?X>*60*yZ6P5<%( z6;Jlr4>*AuC7}7+jm>~&woRO>)&~}>(W2}78QQ= z8`r-VA8qAt-+B5y+>75`;re$T?#Ai=o|b<9{@qso_T85L^FLDI`gb)8chmGQTRi=H z@%LK!+jm>~S6^G{_wPL1P1C>lvlUPOuKs>2fBSAr|HWUgaQ!WL~`g<@tN@)2@O4)N9~B zS1mk6ZTF<9n;WS6}h+^q*e`|3%k? z{{`2;fBrS_i*@+L&nx@I&s}%#c)IxV2LCzB@YT;Q_ZMH*{QZnA{(6LO@%P2Ae|h?E z{JLx4zvdeFhpvHt@EZ89p255QSIyizp1!iV|H@_f<*z9B=fAwZ=f7;(Uytss{=V_M zUY`Ed@4N>7JFbEMwwJ?KGx+6iDgWo~yHWn%T<{lf)c2y#t2aD;^Kf|ahhL7LH~!Ey z@UOWB{s&$Tzx?nz{KfAt`_=DTcOS6X++Tck!7uuHV({?I%kcbbx0JILyS^~y1y^^JqE;7?MI_w?~eTCw-V zy2rph2JSI%kAZs(T!Vq7`SZVdO_)y>u=5}9h4%Yh+E=sBCrcS`QV!Qm=loxOo3}>q zmSfO82>tLW*VuCK_TkeVZbW^&e|W%M-A}M{L+F!7Pw?bnrcb!{<`Fk;?>s)-f6Tq^ zkDeTwKksKhZ+gMf>}vIeSFG}0xYiqm`6*Uxr$Y1y>OoDZf<68p19q%eB;bvtAi!h@~shAJzn}Ai}6e?apx50<>$?w zpW5+v(eM-eU3~r3YW1_$@OR$yu;;nR`M8`C3<{n+;l$ahCN68<_4rwS96rlgu!XL6 z)@;Kh#pSfwKs0ztY*}&&?bCgN>f_L}XSt=8=P4Gf98An}z!~ZsH_LhGhQ$k3t}n%u z%a^cX=EP#}p@P8X8E^JCi$7`Xr-8)FhM(Z?`8z+ldj8K}JeZ_;zD2+N9SHU3oko9Ab*X6H(@=&${x z|6*W)=#Gxar+qvf3b!=vJf!z83zu_i#FJM+oivLbO|IxpKL+IJn66xlUCzmgbeztJ zTNh5TXr_zus%5(Y8&+wx#ian?QCU=sjN+!b?QF1CZel6fpjA zDIc$pMPAGvf*bLIi9_}eKmoUVU_NwcHq;&uJ!K>v-tx6=PL=l;x+9jx!L%k`B912Iu{SRKdwHfP*8VJgk@10&Q{$8c8P>?lQ8; zQLi=WJETPzDK&^QEyf^V|LBkgNB$%{0Z=oz$3o2B%tU}=YMdLZ@J~f>vDOIy>HvxX zaBy^Lol;%Y$F{_eNF&i7GHE3dgPHijk(sOvQA#g8CDPh>*fp+!w}Wbl_|S zsbT`HT;1jU?p|uP0&r|_lksjVUZ+P4i|fx#=s)9I zqwk{s&HH6Oa!dMmev=su-68!O*QQ{2#KMQwBrdy-iM(kHbPlwM$9BAX<(US93swdQ zSHHFw$Fs`gDEnvr&%f(*{tHZcCNQEe$#qsyO1-zI6n>hd;E5GcWqw$p3;4L z_byX*Z=pIk++n#V=&6%<2dx9lc%U1f<=^@_Hydx!xzi6HJ>BKT!e@`{h#v1gd+K~- zcmLGk7~G#6W>WI>6ioYfO1_`$KYn<`<?y zf9pTfTj#X(a7Roy1TKa*A0wMQpMm+)`FD=(z0Ti)fA4($mi&A1wEQ-&jQ+Ry_o8a| zbZrCQivKPT>P^(&nt#{0{|^5L{QtZBTNnQx|K5@EZTOdm@NN0u<^S99FRguh{+&yG z2mUSZcjVu>)_3CHvEw`Q@BB+1n05J?{EMT1pMRgvs?XN9VZPJ=pFN@9U->ORy1Mw9 z7pBvni*`iqmMg0)))P-(+av|hj9ZMb0SW#YgXmd|5 zJ#ErULUf}1G3_vv6E6cDr8{N_viE0-;q-vT0nYewa)FJmoXZdS5{}#vh*-F|(XQNx z%%F=39B@7kyUh&J#XHF%a23pWh}&={Cps|_B&GnEeJnrHl5`|(Nk`I}bR_LrztW;~ zByCDZ(yBBe?MfCsUTJ&j(eFq3KmVQ+`uXX<_M@xM_>aHHc>8nyy$as#H~n&d9TYJ< zJ67%Z?1UCZ``gb13BUZg1`*bo^<^DeU)HC1wLYyc>(e^u{krw()A?z_{vZ{3+3;_j zu2%2Avj1Fb-|e1)fG4lUeXSK@wNY+fESBsI9O+*fuEKxqfnmuu$I%6o-e{D=6BcV6 zr>+@b1b*cx;4(`qR%0T1gzQ_-EQbO#%BaQctzIUaa?n0KEpwt0`N(E zlavLPB@F5?bz<68OJyu z$Gqt?wEzEP(*9rkv#ZtWLoe3a|CakPrg1Hq8~?)E^+L2TFGQ>(!_#IBKJAvFwLU;N zW~^DC9%N19HE6(CCJ>`We%;FSpN?EujSntRu-ZqHUWeIZn|y_{KWEv4E&k}tkGs`y zfE^2rGaWsh`e?QP7Vj^6?xOvF83|lA{8#&b{mS;gRzK&<{WH_FK1WKcFU!Q(p?n9Q z6SpNJv+wa?%3V)p;>}2FZb*?f&8M^~U5XEBPPk=}wtb}YrANPC#s6h1U&?>+byus^ z2iD4e@qL!d{|=WA^jFsSeiBo5b z^Sr^ky?@yZl(pd71~~H~k*hlqU7k>+fPM{Z0Pz`S)9{Kj!~^|8S4)f`uJ* zkeZ@mN6W;>GH`Sc^Q?vz>!bxP0!TcmHz3VoC%(U5j+&^VZn491MqAES-C(g3vak!! zUDRLNf5T7cf3?v5+dWA0EKpay2f$E9)}!4>qwioA*P}7**cRQJwk483`uEfA_!w-fM zoFqmQ4g36_X0hHuGMo$KkVS%(hoWus@U3yUXz3U1eOL4O+2s#h&R@^}wl9s&S`n?S z+q%}lYD|y{@RZxLQ?We;xC%aFt6<=rJER)hk}o4?IT)k#5Ai2MNdY+B*yv!hv14lu zCo8~=%N4pcD|$ir8r8%S-Z6I4xP*_J&t+o_PLm{dJI;*Q+Yr~>?Jw;+?JsSM)}J(K ze<^L*Ztc6APg$4Fr>w)?A3L9V*<%>#^Wt-+{p)+L=Hv5KgTE}UB^dG(b@*l{ zFx%iEbU^$$zl2(KKNzB_{hu*xVooq#twn&`HiKokRG7ypV+H_oknI~@VPz1#WUt^w zr5h-2BrbIyZYEyksA;i@d(p6o6Q7X`fJx$&8on61@L@KL-NdmuEgo`(T_^U%fOeF$ z&9*QfgOWs$sPe*d3(?XrFGg)txyIOiqE^&+w%NMz;*LxJ1Ju0&oAgmnoUzyZjS;l$ zR(a`iOoN0DGQF>Khg>yirJ+A7)U@6BbGL%GMRij`chb#!M&h;!+rzf`O&^~w8huy) ze|%;8H*9}Ca!dM$?b^mK+H{Ry8wT(N;X8g|aQxaQNXEFmxMcjQcCf!Retj{SJb%ya z+Gj7{w(l;CV7Oj94`pFLg#mW#2KMeAE30E@eCN?F`x&@BhEcu`k4*M1+o1^sfF8(iD{)@gg`RA+8UoPKk4{F-(9H2cU{*q^wnNJn|`S}ki`~|-Y{PWBA zF5`EGt_^GFpFi4VXR4+0WlU*#ktHnRp zpH{i&;e5oQ^=tNQ87%CQ?dbG%EK9w*%5-{i#v4;4_T#XxVX2cJ`%T#*wpaMs-GL=5 zf&9}6FUA~>h>o-rk}(#&5`=MkOyQCQ9N~j8<;N# z8<%q!`#tA0&ikC>IPY`La~J&c%>TY%LO-AJDdZ^pzL}ujMK4a+^3ze6G9pIM-a`xaNWd$Mux; zP(FtOR+x&j%)`5a&wMsIv)$PS-)jE#>OY^*-va-7wdH={md&l7&cDw7XX9T7UrxJ= ze=Vx)C))%ZL#>GAHtC)|luk63%w`$*;a@vZtFGPN6Phwy@vmcbJzs^ zg4yFoM$0(!OxfA&Lo!Jr5@G3|k507OqXOf1vbE#|u+Ox=wBNA5v@Y#4tXKOD>(xHM z{?xH^Y5z+8)kVX9&0jY8SF3gpG+x)9w(NDnk_N6}&Bzq89)&~tGw`HozymnO&Z3HI zns>NbWttjWE-bU<6$h4Ad{|!bVOjd*O?)gp`u!^YFIxFh{ssQ^`4=wtkDY%V;^|#n zC}prXB2#pGuOhY4Ld8$qxAU)|s2*6_Fvg-pNFLarNZMT-o&AJ z6OZCeJc>7QBi_V`bmTMVqv}Wg^<~3P(a$D-;c5&1!avCrxaPsdyyk6UJjQRF=E=uA zPM=$Y-f?gj^_TYF@Kg9(X#YQanf{0N4;N_Ud^V%# zU{PaR#xymqH}3+|{(I}!xcRhAYyrEyUBB7(FFj>`*vePs|G?FpfBlgy<$neKHS)j= zMVtI<*+$p$ug`zPWc*yckNnN#3x4Es{d79n_GSO5)49~Rzuzi!?5#E&Qlr9qm$c!K z`VM!xjhRIN_z(Frz@-Wk-X=gdRSu2%9Xcz1!b|>+x^YPO3L!JvM$_TpPU~WWvEvJO zS|~Q`?hp$T+Tf9v4Ya|VLxCNHx9UxGeA-{ycS?`8Mf*!>(*9D~vfbKuy;=VC`Hz~` z|9h|I{OdOwoTOgqY5Z%|{Xz(v{A)VDqL6`YO{ZszrTS_o&Waq2(`)=aTNW)fUy0`v%Ey%tOL@UTTiEG?>@My$z3Ueb6J8=COAqI(SxId9@i z^!RIn`BJdDe{CvCGbthS2z#eBY)gFLk%I&3I1P+QDLDKMa=MnQO0BromAL+rZgMcs zRoJ^W#l$kAga#Q-@sQo29C$7Py%tq32dThy6dF8NlEplM84<2URe-e+f24}LERR{@ z`jbt)mUt^iaia(Rb;quVCDJ3A)6qqV2}kGimM;Q|m2Prsy3FUv!Hn3io8R>D>HNn` z>Hqj@&cFU(gU_PB);i^1gBM7<^QN0YVz;MVq~^kEMl@1Z_(5-}Q@ zFFF)T+QA@3*#cdnhmRlZJR$f2ykGR06c*jvM>^!_rAx40zRO#d5B_zQi14rFNkdLB z`Vi+p5FNIAnAV7MLwCE68L9CAsqU&rh)y_KMKa(Yqw&Kok;Yv()@TwTb?@4h5${_5 zbg8*zC#44zlo1cTe`fFycI90L-EP#NdD`6*_|tAFC8O-cdmow>mobK|4r_js^b_3hxD-eeY`hwfd3?e*ezT{OIZ*{)cPw-4_i$OMV6a zIrCs%2y6FeV(d7R-Lrs z{$=tqF{XLfBC}e$O}ki8G0lwSRt&0UZaKKK^8dt1`7i#^)rS0JgAWC72HQ_-4{iQV zhx-&Yb7!eG1`1uxCE^k>GIODoRTC_NXcdMT~E&nF};q?Zemw)6xkYx&kZk>a#({y*F82?#Z$W~I}6R12U=z{{vi(sg= zo}m*)WDSe*b6-HBmuvakTz@|QDV6_u{;spHuRoRio6Ap8qGA1Mi%qsuXHc!RWzL&{ zPJWi4_1%whQI|skbZtYY!e!Ix2&X%+l@eBT?l93PCBcVf6s#ivjYp z0_B#Z`DQs%%``38_Ik(V7k@e5rIoMBzq$TC|7o`?zs0tVrge_%@4Zn>40bD}4I)5C zSm}6X0zb%))vCLe?d4Bo*;i%#JuWtDo!-~qgZ!9Fd8@#%SkmW~B=K0@LVa60VrWAnsQK-W{O@h!N~vv&7gxiUj7 zSG5@KiR;gVn9mgFA@XCk?v|?p2pv&U8K(eQ0?+vfMO%|{gpVL1NK5%K3Yak=ldFsu z(xB?pC}Nnd<&8g29MB!nf#g0Y$!kcwFS99@72UFHtQ~*hg478RSzK4*y}Zl@v;HP$ zr3I1<$ycCYaX}mDCISDaCv=%9&&I*ssfIl^;z3ENI1Sp z)7$pf`uyaw(Rb1RCjaT|r{9kL9sle60H*AY1W%m1!wsNSbOUC(41T!N_hOiV=qCq1 ztvr^{vi1C5wES($|3_|_f97AXHK65ENuWJp;7uLtlKB^A557Rb8Uua#!9fSP?SmC4 z%~`{N^OwrwI{)na1GmGkczD_KU^ks64ZKY|5SHBYgetn+gJW6$p3Fd>0&@n}CqStL zS5h>Cy^`MRUzWag^u>Dk8MiCn&i?Vi3CDoQ zf7;zW*gKZjl(Q2(as#P8%Hawgo}jg~2h_9r>=@uv<=BVaqZ4OZu=HPh?0Gdu5BGK+ zJVMR<;NJ@aOxnH0$Ut6y^2@?UlLzAO2&t__Fh%a+SmvppyUvX-(X?W{<2$g|;K zwg;$QHXH=E&=tp$LqYm`79h>7!~9aGQ|qRg>C^m~x@ex*n{{-d9b}R>#F6P3VFm;) z8$KTUZyzP;%T|A>-^;&wwOW1U3;UM-T>h-(`t9&-U-}QK)2jDx7unNk&6OxBSOPte ztU^wF{P%HsI9fde$eF1BOw5{9f3XvJ%~XXs$6&B25VNFcIp|GuvsN%H*;vhVIxu=E z)9+q0;Wf?{G{Pw+VL*P{3f|o99OR){kG21^(sVT{ip% z{|o$^^DkeGP>tQN&DfA~SNyxn zR=$*ffq!@YbC=8C_;FMp*ni-Bjtp z3EG6(@4Ec0d|T`P=Pj3ioqtyc4j2Ef)u2<2O=EL$w3rxE=QV;{YrLcK_xa^zD_@oW z16OnTp|gwS@=y79ecC7&5B3HNL;7gfd3O1kKRQXw{E-2}-PVApclPEpe`EqgxhfCi z{89eZMN7Y6oBXS*E%|F`+WJ}N-^p|?{v8C`CN3}G-*x#BW{uRE#QT=a)w*bPwlUuaLzk~WZ|Bj`b3@nPbAO0Qo@bALmh)_qGWLmRrbC!vi5B13dDgVECQt1m zr4+`Np(*@3c~+b$I-|gw@GnCDjlQe>FVO#2+>ZWlz`uk1t!!qCV5RtXdu(_+od+=R z@7&4GWEuewJ%bI7D}#3xW|cg>3I8rUiAeMKXt0=b% zz9Bh9fT~XOB$Gye>Li6Dq^Dd(0na>M?&JhqQPjplQ?lyl^o$fZf|ICZ3TF47a)f{9 zOMrYx`FHRO5D7SY1{6*i{JWged8TJrbWj)(g}3IJpaqq&2lUz5$(j5+kJ7C}K*=tr zi1Ol)YtoqT?>Of3WMvvbVsZs{)bl@eJ3E3)S3E*!9s$uq4gtkk{#`r&^UU&c7U|*Y z?D!16;R&Z65N7SU3H@jMZ}eUCe|#l>!m$1M$SvvrI{qDJPWq$2;^$oMmi)W(UosuP zHuL|%2Jhv$=~w=p=YMwo-EQ&kTxb_Z4+Fmm|Bfzn;NN*PNgA!B{!;$k>X+WGf4Qz4 z^6%&tXk={VYs94?;au`he7_`&Ld}F$n)(+ znOgqc0qd)my3)I&91fJdwm2`L_ zCCLckBy2Xwc5ubSw%sFS$qr9oRvhg-dGOF9dH0VVajxw3@_RWS=9f+B>wQ;q{@vw& zzg&N>C9jj!Mw|6Y?)7XqWIZ#&8~<+VV01mW6N|_lbeHhSx`i2)@JuTV5nvn=z5z#v zO&@{PtCE~KWMfEZ6V0e0TTa-^pZ< zuPp!0uA^0^TNv`_z>+wdDjd?xrdDjVsT=+sQyw<^nJr-OzpTXJv^P&p01GCs4OlFV z?>1Pqa}Ku>5+jGshI^Z~UeGPyyWk%wU%2`oCiU|Vf7k~9?y|w> z*?@oNg18M!dT(N>vNj+SfVbueR=2$78E^Kxk{>+(l@t6e@ZT;Qe4dRN|BVsa z&S#>^)#Rsi4gXC;m~LfQH+Hu*rrYQ^HMNY~760x0D<|b&;J;lq_`Li#;J-0#&GJnl z)G|gp$wt(cVlmQonE%ct_>${I~O8JuUwx|LubfJ}>`-{}zdx{XJyk z!id{feh!ucJ#mDIWU_U`0D8=9DW@j^Dgz1B9DAMrw))^SfA76=eqrAG^P<7K{ife- z{5OcUO+0R*zcmQb-TC=r&JSIGtUh#2`5XMEZ@$7%UL>&p7?G8ZOw@oNgM`Bk19@ZY-poT|pf zp4uuu*Tmm4L9p8z_1B6=)c`DF)2TK78xtNdo{3^((Zvdqxllo7K)TQ1o4j=XTL844 z+LcVq`0Em0@&)WGJ>o`Dq{b>k?ySkrdH;^gzs3T`uythn*5*rhTFAY=U=bRe`9O3 zMC)$Mf4jJ4{;sP4jy$x(map%D*Jvk%|Au}hYtiDwG3+oBAl|UU1e$y3iv0%H?NF{8 z+@Sq-k|L}uI&OY2A(6jhfS})nv+%M!NPp-4|Hj+lA6++k8#smZCa}(q*}jF-wtM_E z5)}K#ha3ROxrs;IL(Bn?kI|WZ^yI;VhXi>HoAL3H=|}#prC+qO$v<1Yv7Eo~&uYxnjN9oH8d4&k45xND7x1E^yJ2IEusf1ct5mnDy-E^~Ai=Uf!4(;_A-LVRMy)~v+oekL;?Cvk4Yb)QUnis=^CC3#6Tv7+493m2LrXU}Ybvtc*VlH$46PF2_Uj(W&ky+1!fxn1-hYGmOLw&pz&lWu11^?{dAnuEXpX$Fh*Jp2R!5{pScC{~GZ}+9U za{I-6`CKNj4kRdRq?*sH5Fo~@x8*oug+-bm8z!# z19s!V=q!P|;vby<_G$Sx>GSe;EVu7jb~db(cDjCI)N30NljU{Ojmw&I;rtt@B%Lcm zSMX3$EOs4P6C;!2!OVEcHU-P)zTll7K_kJ{y4ESvME_32W<6c!-?(_I1%6iV;9WU~ z#v!mPkH%T}2RSu2Y@QOearK^U&D`I+!9S45`x!eRqVo?}>X-<*Y7C7gzeBn-g_JkZ zD=AF`v_#B8_!n-;xWiNOE%-Q<- zJnQ(Z=+(R;c9)MVBvS#d@{OJqD;uo>PAYMb-4fSda$p*=CsGav%4C=3zn-fC0MCuF ziM}K}s__#_{(&qD(*-{cqhyGs^T}=Hch0}+8v6g8x1)dhZ|R>7ATQ_dbN)dsujPVJ zosr*}uDhv3(BMC%or>Ss5_6Wm-f@d~3$cfPaC&B5tb8b zsUqZuI{!d~C2`XAN?t^5EC*@8A)p*5r^sKyCV&T%`+G$!T7le6UGh7OYiD5-7AzcDp%@{;{Kv{EtD4@N3ghM9RfhVs)uE}jbH9G--04pnoXp8wVFetG_1Z}6Mu zyZh_>gU$PU_roMmewrWcmbQg~4vwZefV{t#HuqEz?$quq|Kj+Z|I1tEkDxDo9;qA?N)&D4IVx@KoQM(CC5C$!+H3CgP>q8vpLuEcm8{B*Z;YU zk*|wZAA&V}$q3Ac<3lQ*alfzsY2&Q_5w$sBHnj6#hp~*Cp2?5tXZ_#OueyKVmGtS} z=J0&=a{gTZXMW{e)yHCkiEbUF$8m@c#D>@5^q`|dEvMJQGpmpx&_in-m-|lV^333E z{XboeCwJ53Iu29o4VL@Plh&RMhqVYH$-RE=?tsUc;p4XcZ}pe@U0VPDFU$2i%kGA? z*8eX0+xovmz8FwlS1>?2G&}oZIteEq5-5vvsj|kSlNDgK7Kz+S-BRPYMbFHzN4Q$P zxN1K>j#p<_3{yOT)rwwOw6F@8&9K%H%J7Lt2ehng%G#DWxhz;Ffs1{^IvhL8%BfK& zn?3$I3hrY4pY_l0oAj?&-+M!T=8XnlPo2KHpC2_G88sMs8wlaw_%%!5&8~m!UtFI* z|NWElE!>ZI-r%$3S9i5Ozg$aybA5jC;Wt75A!~-HH@SX~WWFs&LU+mDjGh7ER4(qB z#55xWj-0ej%XK{y7=^2C9vt4ld?kx{$e(==rZ3CSU9I0&e_&d_o9p)%4L;As#`;}F z9LIx&^?Qba^dF7~G5AX7f}uK=SpsjCehr`f&;NB=zRmUf#n;@9ewNnnwAHoqYp+?q zyIUx$XMO$d-t}z#&V<87BZTAvn-yr5Ou=b=@b&e3%T)kd*6(P#fD*D%oQA9k ziHQYZ;uC<|Wc}`010+QH?!z-m;g1t)+xp!zPpkm=6}32LmR9R`_y1c}B+^vWkj79B zcm&C=E4P+-=PCeDo}kw6wf3(Z(EQojuJyYsRsAJ@0pM_J{hQSvyoUb&(Cz4-{+;>o zxPBKk*8ODv-w8xjHecjI`@VT?o`(qoDdZ%{tmLzPR~ELGw>ec3R*vff{S{f-T^ra*6W6no^}CB-6Gv<@q%d8- z!(YISB`^E+&a0BsEYsQlcadyN;X@4P0J%5Ma@m(lXd*pi*$yXxO?FjpIKk#w_WxJ# zvQ}>Hdw$M|=i4x$f@wlgBYfZ@K2UOy{r@DM^2%>wAY%=Fj8sB#6&URf56)b_KZC1) zb`C8f%#t(D&pAQIhhY!k$qK9}xWLgl7`Cq8FR#h}*&n%G z`+bG=I~+DTZH_mdt>2}EYuE1=x6I#lb>NZ9oU(kt>64yZ@N}PB23fx!?pr619&_f8 z>-Wd(`e*%qfUE^a(Qs!N4eyY(bYH)({^;%S=YiL>;uCH%WWN6NWbe@f_V4#jIK+n) z@BYaV8Zr+a?lK#ENEV+QAM8JL|DFLn`}c>Y@BY(8OTX6dUwAd&KRN$n%lTvdo&~$~ zBk9#re6++JDr{?Xy5^{XNuRZ(XdV_UMpDkar)DLT$7gD;MSh2^LAF%nUCdv_-(|y3 z@OSa`;O}Rx?cZHoF5?gSr2oE(C{3)mEgqQfr{}(3sZsE;trGE?in3RCD!aeVX9`%fjNs?y#c|Q=Pkrv`o}+B z_zC`=f7g$$p8xYT{Jm)Kc{bGl$g@))&Nl4^b!T4vnI-UM=l^~EdNnQI!uoafCzk2s zuGX&?E&giXo9ox}Ke?R#3>_QR@NXne=NoPP>RjaLka5X&Y7L+hjF%XP{b!u1s5-Jc zW+xblXIQ_+M~K;@`1P(O`_FNOXx)E~YbZM+gic{kpD92H9ZTWN8Mdun@8G!hX zukgFMetrI@mho%*PhS|^iOAqhL+c`=CuWz%#8HH@kgvPkYrzx5xIx(rvl@D{^lNz6 zua_-nEvF5fIW8`hhyUoD^Ow6_0DhZzJh=7EO3ex<|0U+q6n*RNtqe`2Za zKSN7dzqV5-z%?-a<%M;+eigN~0!%-=xc^+sJEqBaW^{FC50OsxpDTj(^{aK<%Fz<1 za+5|{&cgb&1nL=>B;&P8NgwE zIILfX{pZL7>;31;M&DcM|Igfx{$0OL_n)bkRPna;YaI-mrR)0oRcY_4oMHc& zIe=(gJ3peYU*$I}tzSdF8|zp3->zS4V|v^ARgOg}BFD>SVU`0`2l@4NgK6S4ch|^9I_`?M^=q0~cq`-jH3zCHHhT)Igaw_EhJk_HcO@Pc=kaM< zLP8ld`4Vh*m6?5kEWzvi*E&A}Oyz9WIzPg_@M8~*$X52M)~}38o)y6{4IZ@W+Vb=n z7%ix64f2Dw?LVLY+1ufFW5As`Jluuh$k}2Dce~;H^uYD&BaUIH z^(#w?9pu)ZU}yXJ;iJP^zp_VU`vU9I&pH2>x6B{?(7_3ZAQLxz{?YNyg9otl_KsOE zGGTmrOsZ@N?;WeTzy)o``;Q;EAC4UQ4&CPNvFW@1I{$NppQ_)@_3P@-FXIpXNnf;j zYVBn2ImZ!Fg$$LoWYsuWpiJE(LDr42;H5zZgIf)wA7(5Svb~${H8(>HzA#{+j7!g5 ztzR!1euBS+_3QaxSjJ!G|AoPbP*G3W%FP{N$|}Hlq8FxlT0mE-kW#a_k>FN=(=MhG zh>OMIjK(FX0iA$2czd&tGl58w!S9I?Kln4SKKva)%lTqthCu%}JWI&K?Jn^5F5?pPTE?%LX^kuk!TuC!{r5e>#_F>rbgK>rY#ei^$`n zwB53V%F5_GK!J{0m_j-_#y$kwt z{dxYEruf}lf4Gny)#ch~_p>=V&;#l%*D^k%iU@*=iMnljwOW>~7pXXmc zE#D^nUjF6f_BG4ShL!baWRBXa_CS?auI&}KPML+!8&hm9;bWu@pshdUxwb`Pw1{1# zxKeSsVz)FLA=umsz*LlpIphY1zODY!@%6Cb@MZnk#EmmK&IEz3lMqw+XPD2<9C$I0 z;KIV1z&kniwvAA+tEO5SxXz-Bv{P-9|HS7jStEkTKa;rphS~bl#E12#d#y=#j~uj> zM{+>PS+O14rK>MnOEyfPq;09~A7#gN$TQCFwK)W|m7c3V!X~GOr-VcP%qd4NM}+`P zIVcgrr~5QmV_^t5eySKl1aS^o{UOqs#SS~3ZZomZWK>pEtv77n?Zy%StaCahUEZ22 zIG`HP1B{kOtM)ixb8VzS^I`X_Lf^F__!6t`t!E>)8~KX8v6gM zx1)dV|751E@E`jZHe&e#(m$0A6`h`{I5;ve{=o$!3N*x;IDCTepCCW*`b2!>EC(NAuD_s1Mm6%X$RpG zTIIhPwyr-{fBoh8f4#x4$?gVtWBu8$9ht5_*$8oMdDzyU2%3>?m!=#ADyXeLIfi1p z{PQjIw~^tQ1ES4)%%_eXdyoU`IoF?D-g_1?u18N!kKDxGJ3M0)<}!~bCs7oAxU>J% z>xK3nNB;PnIM2V~cKsin$epY|FI)OGzusJbUi^*a{N1lVoBre9oV1UH_2*@S&&a3r zhd+hapM8Jk{BKS0_xzn3>(9%pW%{H4$U*Y-12=rKjdw%8*LY*vaQ}QfFp%l}+v7EB z!15>TGdr(DdY(R=fARdI6Z&4*KR<8qX;{s7#lN^*OMjDpaq)MS+t)llbNfC2qRGeo z-D&-9@-JRA_yYczi@p8%7puQFE#D^p;^Ob$j(+a>7vugp6WM$I#oLsBvHAzs(EmTW z9sS?)FN%3`&%bzk^DkEacuN19{EOEcd_KNiXa9KdFD|di|JgseW&3UCzeRsL%)o{H z^E=>QT--8$*Wv#z_!nPnBLBzj@VE2$VE1Sj5g!E2pTHsEMv5GGD=+uyF<5;RSA=ZZ zt*uA;V~ZWZ^#jDJ-PYe#*_-Pj9zJ-86Kq|sRd@*38o^%#6Q01n+x|E|kN$VdfAK%w zccuJz--}G>|7*E?;eTX%lMMSb8S=h~J~&vQdcu3_7C7^z5I#8IBEOD@1&{wc&7s_M z=)N`Qi9@&eEgut?MIRG*3o>;f$kb|fW=?K6u08V*Z=3VqTK%Pdm-N5?@8$a4PB{h1 z{v$i!*#L{syBNrZ6k7|hV4F2u2P~ez%`A^C0Jf*xqeA+Tyem&-}cbIX><}|NEmvdj9_u{!>3o_n-dL<@yQ#hvK#8K@Q94wte(e2J_q9u-1%5 z%N*e|`(5Dw%ZT%`;kWv~*RMA8Xa3nT{+s?xmv>9w))Z-UE6tf0){M=c9wtVuJocR} zh{keEk2oj4gpiM;(tJ>jU%#D4z*`^TA>PAXaZYYI~ z#=#9qjt*9bkgp^_XD+!-40eR31w9$@z)-yJ+bbY?HrqwIzQ9ed)vb z%hn%N=00K>nv42>sn5YsO_gyc2FsfYv%UtyEH&{fZ&W(9EXoU62Kz0ammUrbd?^3_ zTln8v{svE^ukgzFonmwLB&E$Y#!_e4GM1`I3u(Yvl0?G23=Yzc&ko`m97ktqzuEE| zKKDQVi)r~c`ERR#wM?J0>}*)We@ngRmGb5lEA_uiW%IJ!-haBccK<0du1Z`WK(qTa zl0*|tmULiw;it`RAQa~r;4806qi~(OE`aI&deyC2x$8!*G z&Y~mZ?1t#^?|}yGLeU6r#vkeG&OD1Y>%5IbQtc+9AW%z#K}f+dav-3Dg(6553P9Tt zccnp-vm~B$V={VYRr@NP5Ei57DwwPQa#lCV#%%zkpQi}+8H7^6M~M=;eu72SB&pGV z2<0z_Sa2>F>Bu;A@}?WN;VF`@AP~g|KLMb%)Plv9T_(2HkPQTk@yT_ zCQSnsCZT3X*%b?8^qS06W{jLX!Rd}YQgeXpmQzVC9@sycuLo@3w&`vACjz>xcJvSbEep$tNZWv~`M{mI8CQDfDxsV9{ztMIg7Nie&*#5aI!FdWslHM4%LWB8p@eeC3$LI)5SM zh^&Hh%(K$9P0xQDY+=P#(y?R+4UcFc5>bbQ$9`7i*Y?-t6KX)h{B z!>;3c<*~+Y+pqaQ|No}r*Jl1d*xU!_%ev=g-Z|$8OiZTvv{r$NRh7Rj>#5>LD0E_E195d5qc$_QxlVzWh#e z48zVt#fdzSfu8)-LlaJBU3B;@1Srd!?;=@{@!TNh0cwMxIPIc&kk5 zRoxob4bG*N&$SIY4|T5XePGVLT`$@e=@&EBp751+6zrE~x?Cf|muruHKB~)WML(gh z7ys;v3(;N}-|#$Grmq3M#lZOc@S%vQ2fi*eF<9wkoM{cvM~|lb9eN?W4p5qK_vrWW z)aw-RR+*)M&1XxwyYrjn-}L_VqTxUF^VQEjy87y8U$izpY^k4j&=bD&p__lDhk_*! zd`;hf^>?1{Oz3Ax{-we3y7q*>Vqd6&Uu^-<1@bgs#&3Gt=8wX2zR6np3-T`yZ%MzN ze^4BpkDR>6NjIuGc`v60S^mT3R zNpQx;jCCwWYGp~Q8lobhV2}hb_G4rUT&lsFJbBFA7+Ay~3gRs%MM7^o&ZwRi9CKBxQK`-Z#MIlK2-zcv1T>$k@J-D|VW;{CfK zkpe3(FHl;4dknqSWSQGr6=KjG1%2+Q^mnJ_die;br0xN+$Sd+`1imOJS*554o>0{(c?=sZuJmiGamixTF zV=F#ROqA>^?PFX2S?GUvi~jd_)Bn2lx9J>}oz~yzMp6$|XT^gmwkqLW09$|Sb#PS) z^3nMb`nDO1&E@)gz}iltk+jCP1f~Pl`#bv4zwNeb32X{QK;&p$HNs^5jY3i5sEBAv zMm5Fxhs4FEAFY1XPusc>57ytwgWj5h5w&1EVgpM>TV}4L2&~M>BkieJqNt!ePzrfi zsqAHY`+kAW%i#STsj)3ywH~##v4(|MO?&3NUChE<1C8>qQyI0EC7P{tb=rbX&?PB* zdj>uxybz|N6!mhBdGKukEx39ANeOXagx*7vsLxn`w@y_E9qXV~Hm?Gm+1U;xdUoa> z6Rm#5{8=kof3s&mDt6XUdVfb1<3hB+TE0*4Fv049{%~;S=WlStSIV3>h$J6gsZhQu zn>;wDL;P|KBOh(hKzOQsft4>HUPS*{zqSUs{;#fIA58w0=C#$C<6pFf)<64EtYvwq zpkYD1zfQtaN3G@{dis8WycEVid#Gl@`#WsME0l7~=U=p6%0J&y{u{#`+i&sw!^Uil zC$|2kw1;|fXBy6HJO2Db7KVnwQRXEahxDB=veZ8Rcu3`+?N~lV-Dvb_L#g+f45Lj) zZ%Cfq&^HSuTJ_a8M*56_PIKrFPjzs_(ZQjt`hr0FSSJv+HHv7P;YiOUfrLpi#hs}bUjrU-@3X_7i+;!(#6{FX}VY|K3x~{$!F+-v75SBTRu}4Yt2vA z#oF^(x)^Jot&6qkb9Av*eXcIntIyMgu0CHEbNLtOg5MYFV!iqzUFhzMbuoW?i7wje zOLZZ$m+8XX@3*zT#Cd}v%*UC0zu~?|TC;bS@IBMho%P?O4Rnc5VW@w%1%b9S*q!JM zJ3}e8lSH#=j!iezv^AE?Xh2ac-hhN;29mmO?MR}M8u~891B1f zudmNSPyoH($)8po+Kd&+@?wkil*4-X_$@;bE?(b+rWuO5XF@=bhmN&U3S7C}nxwN>RJRW`v0o7ZmGwO>vq`s(6ycg1!QkYLeOl7E98=hO>JMK zM2zZiVhU)RpV}l<=j-8&kb=@9N4SU`(1+*@oW2@N^p&WDT~G9smcJHq>2#ZjRg$Gy zM_i@l%q@LuQdF8t|E2BXM5|}l6LbbWL5I*2bP7E|uh0|pigu4)(eBYJ+C92+;r-7i zXYIdk|MT8@{ZbYijqQJEaHb2_dO#=WhL-5LfX*^W8Yc;<7f$`W_w_mfnI#f~2m^$W zuC`QnyE@~t6PS_3OCvxyZG^BVzm^7Lf%J=cm-y58rPxQv$77Tlan;dD2qLRwx)z-BL`k zj2g6c_aql|lX4;h^b*}gFVSUqLANpVhjoUqZ`U z>y2Ikt+IW%@5NQH#xu{DH1&OLu{dsTWl>j|erS%z9vsX^FGL3H4 zoWj%Y!7E#McND!3T|>zMvo+=_>d)GLl8@J4P5XaZz5L?*cS$g7^sJ^*yXI~JzBqmr zSr^T|up<9N#hPTXZ~I4|zEIaJ@#p-%X;H;5zGn^pYX9m0`B(SF1AJequ;z=F@1Wj-w&&N<@YOQ - zMc-(O`ipKztr747B6h_TL6vFx?*whMQ=`iesjim@@>c-0rHsH{q;~k+$kY5w1U4l_a6bZLYzMIjZG?@|^Zt^)lX{~q(qE#J z^q1%s{Uv=D^C{|*`4sibdffr;1|Hur(c(ch6pXW!@XXgB` zjxY0P?WX_!{D_T0wPBdhBvQB1_p^|Jj6WpfU^v@VOb=hAqrOd*(32^gDUqpDKq&FB zRHSp-66dFql=<3^#G8&_L)@nDJnQi1M_S;7uS9RpQ>6QuO;c1GO{CN%Od>lIY=roJ zJem8mG3BOQy?iR1IW1pRwpA`oYnizU6s7Xa6Xzsv;gl~=gOpP|Kcak=xe8<@P=>&U zRC?rR1+wQy%w|$xi$N2#$1wJ6$DiJqAQZWX{fzs=|U;=JxyuK9H63VIPmoOJ#yp(QNK+;!MvyEMFCw?_Z}x z{TT-y+9J|naTR5!P0$|J&2M6Snm#+%|M7zMPuwtXN&ex!=pFosk6+Ac4EALf)v)OL zb)p2Nn(+oAyP)2(yRT|d&BnZVkf@B|2SfR|9>VdQ-P$KnH<=?;S1n^GgqIGEQqAhL zKE8>hCsKnm*<=-QqU~iyY8^4GqO;Z9>1j#Vmi72VIAb+>eW2%9-|bN)u>swYw&)aX zo(fm1tW=!fZ@wdcDw2ez2V7$vv#fDd6NGV>-Dnk6XighzyKUh=Ret!>Gbw``c0}v* zO(BIGjP=|@Jn1N(u~mv3(lj*z9y4uTLQ;O_7qjQ)`n5X0m_M(+{;ny1IxBTk-gl}b zdMYPn5v+@OAxuhOu3v1=7} zAL+rBM63bDomOv9%oxqY>P{)EEQ#ttvfqg1BztUKq{J+ns72huk|mH^Rdc(UGP^4- z>W(=L^~fBDc_4i@{UCih^C8;Uru|pyr}e_Dern#|Y`v(yey;7t)ng}CTGFk(A)5{6 zD&%kL-y~ljyK2_IFRqt=v3}Bdk@VmGn9!^?NmkDs>tA)|$*NJ+J*kGwYC`a;DO-I{ z)7HOHb4e!qu7A-@<3I6d{MWp{*?LJm|EzzlE!xMr>DK{wXir6R2X&4EpyKqVAb0HH z4D&#Jl@8Co4$z(G=mNauZ=dU69;ZQz&t7T23A?3ecMJEb-_3*X)0+ z;a~Ny!$kFeq_I_qvwrVLV?76p_I0ozI3MkbX^O1bihx9dW(rfJuRLh@6zEGY?`rA} z&}S?!4r21Igl*T`Iyct;Y8Lcv=~KimYb9lI?ME9ilE2pHw$c_!y{3K=cu$Y9 zYcf8}9)xK*%~ zzyhlQbanCu8<%wNYRCyMYfcg&d9`LZG$#qD^jhm%zOp-hlrpFHGR;E~%n4Fc9X-CJ z#kw9GEc*mTBT;oIh98x0fgiPSlI*C*$@j(jU&6Ljgj^NOj^RTrr#iBXEMLlOXUyCB z-%H?o4DuPP;$ZJ@|SMx{(stT`mgoBZOoVVzf@&5-?m}ee!LPHyxoI#Vk0-zE~!WrL;=<*Ss2UI zDO)%C5UG55f73y>(5O?5>B^c^6vuu{nD*l}M8(L@z{!7m?-k*OOQu0#3){& z)cEPxPECm90W?Ws<%a~|S1FBkn!A8N8eZ*f(eTjwn>x`+uv2Bee0dbLR01l2zozNQ ziw~7b$Hw!mvCM-~d0@RLDs+?ba5ye+pV~LcPR~dQV5wye`V|kbNSe*(?$@+7ZjbVu+G^F5aNBWmtS}Wa^rK9me-!RF&*oaNfpVs3? z=R1~fTlo);1^a6c+ru-RKBgy6y_4~oB(Jfr*FQTuKGdVN+RzsL40+F z+3BgqRE^lscmY%uci21CC&YN~;ka|Euik-<8`uZ=))s^QcdBdl>AUrx0N_Z9POy}2+P6xeH@&|v_`ixvZR`FN! z&#W(>?Y}WqQHN~*%wg;~4wbK-S6!L5z4QYxMjwvVew9W{CJc<=iijb)I=3_j&}0b7 z+U%B4ScIJ+9R;(kFFmQmgOC~;MJt-{JfL`AbK zL{W*wkFBrB`sE%fUBx+={c-pnL2AB2RRQK7_RdeG0OR z=W(&_sKaluzc5SkTerWmSR>!+{z0*kpve$3BFT;25-b`Su+SG57RYj|^AC&4k{ft} zpMCKIv)AVOv$}uK`m?*~kKqTT(B=IDDT`D*me*G2+|iec}#Du%x=D*A-AAzW(VrfgbT(rceU2m*a?SsuP_qd@llsn#-D52eiQ zdvp?=m9${_YY=CzrB6e=>O;MrvLH&DVqpdRG3!TkEWZp_^<^&8mM}qa-<%ThWwI; zx&^B+P5g@YPc;S8zOd~TYq{y?KWUN%kXrJhU*#imdjAw1wu)6;oA3Dt=1yK=M6YD91YWs|%i_+;!^3YnB58A0(wSPe7%GWkN zP%YnQh?ie24;9z838-DY{A!s~?N&79#-|CDi!J&sdH7TE_EB#wpz+XW;%xswKeoVE zczwcD%FXxV#(Y0c>uQZ3w){WUJ5>JuDc_IdC?&ni$=ZI52k)Qi4JDnfkYX_GNYu9X zaLPB^bO3^eAZ;vYY+`NC=}QwnVt#6$aGU4_&{N(&wS9|IipH*nPF_&6(8hviu6&h; zZ4>ZG@^R}758FEMkI2D?K83C$owN}llm%}uNqT(Pe4@{k>&PlH*VpApSsO@7%JvU* z{!{fmqiyqtm|xA3e!Kp!?jO8oNBz&=KUH_9fAx#nB+w2i55a5{#Nuyof#a5A6JP+NFKJ+#2Yi z#$>IfrQ}+&sOR$Um#bseD|%XX)AIUK1-ik$+Nh4HQ3`|`&HoF( z6LCi$$$2SL{IM4-*NZ!Z}|N@ zr8oV$6z)Gy{^`E>uTr>lzm@Jc(|w-!n0~Q`Yo+@%mACbcDcwJx?hmB|iiOQbF4!>{oG zasOy?x27p#x*txzcjEh}UgP!f zbIJX_B!@+!|H^B;ettFi|9XJ(f>O&pXo38{msAP_lG~^_b>X7exLq! z^8elB|A)!{W6A#$$^YQBEtxm}{h{4kMg2xSC@-8|45y062$W>Dry&)pA^%vX0LSrXZez*NgHQGI;Fp zdqG|amiWCaukifn@LSc}OYoZb-G$djkKar3R|!6wF2|$G+8>?ztuSy&=Vf`!!|%@T z|ERfje!Wrdb=Ozc%)`G+w7TnCMbEEqlKagy@kP?wqyOW6)rsupkJV8xOS|R~X1XzN z=gQ3N-I-%Y>k}!B9Yt`VX#daW5R7`qY>UF$kL%Ye*DuTc-gNz(?r~Mq`)@?x`m)OP z2D$4lkxM4>&+nAwqWQ;|&inegJ@#B55wRZK&*Y3;_tLr}UV{Ofgsq6v3 zOMd;T-0;g<{G+;9<8!eVzpn6H@Dl3`c+2C59XXK>Yk$f}8l;z}361iSc9jp@SHa6~ zD4o0j-L$sO5KkjwqAkW+=nwhKQh4xv!(79-9p^uR_cl09KEqy@n5ciAl0$-$c zmAvHrYuNvj@`?J1HbcH)s=O=|KEFOFH+>Lo200-c>V^Hz{0cdd-UsBDU&sZSkWOBn zYF~x^d`uVVM)~u59`_==>3?bL37kH^&QCINu z-VGONMcX00>P0!Jw_Ju{uf`*6wH&#eH(!W)& z2pjSYy@>m+^Ec89Ip%y(PZ!}O_^96DX;)r$oxj~~Uh2lH=+mNJkXvrhw_WCMx0@H* zR`t5bJR$gDY>lxe?u>7=Tl5`Sp%d_t>vzrw@%;D^-bl#FXnG`c}0HP(zu9!wJmIO zSI4Qk{vrD7xTA+LS784w+HCbsTGVx28L0p0JK2A$#?9TN6a8d4YXptHpMJjDR)aTrnV#iiM%5m3uSr4-F{k`3h0QP0{%u`R_j%c?_TYuQazopRc0+p!`PJRg{m6^-@+x$uMD!BdQ0gu=_^I*~^S6tXgS=wy7V{mEiuv0`(ug(?_uz}ZW*=Tc-_Wy*l%vW^@I&1o zql=^wJj6YC;ZFMWIn^urIl^FK?v{^3%;DgN@#rGuSjS7Ge~~nThqzaHsrK9Oby;3w zA0+Ov&qVu=aW(o9c#4a*V(Abg|| zV}7KSr-%MD`#CZFTPI)`-|^BvYZykpIt0ndfOTyjP|dj~wX0UJBf#e32m+Q#!B-sk39@K4so z_u+YWoA1K&O?bWs&$r-t$NL$&Zt8lbu20tWEM3pm^&DN#)%84Gn04igGE&aCpv4um zi}C;;!AtN1Pn-CXcWwD%Un0uF9UAhjyCOXIJWlYy9X{f^Xq_lZZTZL}(!6L|o8)ji z>UUlFLI=^q&_(nybP~OcE6z=by1lCU&E-d(P}WU#e7owGy!Ed0Yg_gXKJUs^uZMq3 zJ^GKTrRiS1TGLkRpNKx6f4QZz+s~sFcem0$eq(uE-%=glTz93q{z=t$^`frNo4S6S zRKM3XZFyZ?pR10!9BPPDeTn~ck9aHjKRxB2?$vma zZ`>oDmHeNP@{jxXC;rnt;;rQW%9MY)&nodE-?&FQk^l5ZQ$C-X@=y2H|C;zu_lOty zN4)u$d%U<;<3+x4k91b@e<LZUN!&uyA%KEUX2&|#y!%h=0BS!{^S0?C;rnt;#KpX{+7p!`>YZ#@{N0>6Zy}6 z+VeU8B5!{;U+VYS4<`P9!0!<+@{f44zw6;!DSkCxK3?P-_sIWdA_O0cYaajn|MUE2Kb-RaKQ`w-dx^)Jrufx(k?*eeo2h?Y z7yssOdH!qte{+lfZU2onf|HMr+-rK zfBwf#zxmO6|C@i{^u_P`efE+1a7B4;vt{wLHF8M#E}pu@|0!GipIr8zCinD7WqQHp zJx-t9sP~_qIemIs?|(i{{=<6z*1+lKy%esyCR|aV+iO|8VsrkB`?vVNY>WR(%Kp>j zp1!zDFSvY>(`PTN_n*GN>C@-e`=38I`9Hhfzx6DqpFcB&ySXM@QJ~vvIsbE;^FRN* zE&iXo#s71*_`i0G|7$A#;r{FjJ&9@lSx%p(dsTYppW*)JuS(%Qtv;PzinO?}}uQ+}7mG%D9H#q(LFZ+G^74_kY^lr1| z{QEcOfBwB&{J(pP|J%0szjcfMcUJtv{T&s0lGFU#oIXwW74dzm```K&zt6t8KAn|# zw~27`=Qihm^JlmC|I8NupWfpC@3;8>RM~&_lkT4VyD~k*GyMst&;M<`|Los5{pOGR zefp#I;Uc};eP6tK^ZaY^8C(26eT)CAw)lTq*?*ec(@!na3pu>f>9beV`%gc`>5Kc* zJ*_v3_>VEmt=HG{5yiaq6_#s6Jf{QpJSf12FWA1Tv|^8B#VZ>4+C<39T# z_rLj$bpOHnbRztteZTpkv=6nWAU8j_#s62f`2X@2|3%q<_Dk-beV|N_;@$j3r=P#S z-hciJPQUf@>HgmOaFO1leZO_KSwC)#xA>2?_z$=E_sjnCp1bGWGCkyUtK;-VyWYQb z?DX@)bickPTqJlK?txteqZszvkj>*NN#yXjDsWTSMgoll8VNKKXe7``;7TNLO{wsF zn)eOBo$-wPrmoM|^;TU^bQAo?`|crwyM_OY)^E(2oB8unV$J+{DT~I|NT88GBY{Q& zjRfu{2{3<*Ib_{D`fiZLhnPIeaIdZ-+^6}C`7`fPhy8AsN;7}H+clu!zmY&Afkpz2 z1nyP|-0gGcsQ0^h?##OB3lYR^!sQ$t_lN!AcyfAp{it`+?GHztLo9>Q>FD_6=(yb* zjC)7NM@Pq2$kYr=%DV@Q)-d zM48a*_R0iB=@}`~P>5bH9NfE5GJ;%XLdT-yVMu~hl(i7OmDd z-Xi@lvxGwn_eJm5sDCO7#-*mztkuQR(d+m7Ln^q_QJ8+OKapLUDmy+@n<}s0AM|p^ zKuuw&lVA$*SyYi74jz$WOPk$&gk)u244Uk`* zi8HULgV-NH-qZ)Oqdt%s^?{*2azhyF9}>RL^kF?G|R+8_nHTXZtPem0=hbJdJ z-G;-1_5n8;^#;it4clhx4=sr7gJCy3%lEu+vcnVnpi`6;ekmjTV$i=$hB%ymx5)Wx z-M^s!Al7ghN*Ezm2+LHGz7NWJRoP#4Kt@{Y~gCdPF&q13H9Wqcix!3+)&~ zJFYXtrTxwmf6o7#7OmEsZjnxy8x`Dd(4{{o;`;blHw_XRU=EK@+;XC_Qpw$8(Pizr zMTG7NboEg^y1}mcuC7~TSHfNf=YujZe$P_=?zcLA&mY+hH(d1J)`z3qUWb_)A6uiy z2wsU9L1I_8?|P3OtIY27hEPxN_#PrDzSniu5?O z(db)+{sNdcRRvSns+Ri@ZY~nT&Xe7`` zppif$fkpz21R4o65@;mQNT88GBY{Q&jRYDAG!l41O2D7_I3A+PAkTp8`S6a z#uK5^2E$3EfKk5bZ8}#>khoEQFdmLit{n{p8y$}YKpD4tKlqc@fuD=!b+L*+nWpp8D(r7{9ytC0 zxQH8J36=;HM;i!1>iCir!eB(Iw&VoasY){hije>$;EWIkD=85Gjo`lwA>@sbiZl(? z;4c3y!$l4CpeUsfq_HGf3Q)AKoPwGEG6Wb%GerOh9!N1P))oog3H-_1DZ^1#|26p0 zdGg;<+!gP@ADQS9epHML!6Ue!>P)hemJUW%y^@TYTyI3(B0FK@1|wi%1nLPbs>Wyz zV4#E1NPhSX`h%`H90_VZg8^dhcZa=^gGn8QsbC`|BA?!LH<;WnzIevJM@WY0g zw~mP}3uOE-#}6my;($&vz{IO;?Aw1KfAGVtbPlW6?<#(Hmi((FDC9@Ktzp~-Ww-i> z4b{eS53sbx=&b;mHO6C6V^FQPrh;4*ez=v+rFH(_w5Z~TAFP~P8*&i;2|s*X;D@p3 zU-)75UkN0vSwR8`YYgm`yc8^XVNt?fhBAJ5UMk<}{H?X++}$W|^`7vfUIR#40lYcb ztV;RW1ASAM?w3;?Mc78GpB&>s>8ZxUK&RM}EIT{P0>}ah_jezbhrM zZT?3q13x@Z`tABZUR3eJ52f!`URH?Ge~(hYh6~GOlS=7C$56mEPxgbi6?nMu!)hp*B8%i{;hL!Ar?Ob5;+pog25Tj`lky*h|RdJrlfC?oHswsRU{iJ2Z1Q zjta#t)UVL+D@!mme76LfSd9c42{aODB+y8pkw7DXMgoll8VNKKXe7``ppif$fkpz2 z1fIYW@Mk`o@x${SpZ^HH(FO=SIk=|B-?EHObljWp!NW=WxC3fFxP0@!^RMP8*F+Ie%7%atia< zJv{0P8$6omv{}xd9Zq!qEXU3cCOUQ&kg$%W)bX>1h#s~(ceWF+ew3l{sn^~nSw$H1d5>zAmD=o6NeDG3xdk75QUoqAD0mXBLbqZ zBoIMBn^FXV5NVl)KqX6{uaa=6ug)-Zqg1PaVh=$i1OAe&V}VIL#j;cj&~ZuwL{Rbv z3msvcR?(-b^G@JTz~4<@p4ER1ez^51yVZZfk4a_%={Ww*z)|7Q(<{(AW3OPW12srL zf7VWnJ?p6^JU`VjE3@`dbG~isQ`gj=pTF(uy@Z^q z%TVVHl|HH0wF4aKBhd7+gY#=m&(&{K&#whyCp{O?ULvBCF{Q^L{Jb?R1Ig*A;-y1) zIYuBiAfRP_sdx7(7UAXieIY1SGOXN^} z%&-864thp4;rO}CAV|>Tea^3)CH|cMRs89D*6_c?pK4yB`qlZhVNpM-TGiOX`L*g4 zSI)1MXFA%}&bTGGjsISTGX8Y>XL9|1cme(<&VWV~vscyE4}P1B@Zrnxo$~4&Q$LVA zw0f1WoFBN_Dt&K1-aHcAl!oIHC=*Q66~$YVr;x)<^Og`Tj*-H+s3AlO1>AInz<^E) zMTi=LMj1w<f(4#>&jeSqXeduS z2^^g;Cdgd9VuwEOi`0%5SLn0$0ldu3ZzF+50*wS32{aODB+y8pkw7DXMgoll8VNKK zXe7``ppif$fkpxq3FLT)idU<6KKw)R`^rEw!+M|g`)**t8+oc5Qp2gL8Pw7pUzYH zy)IVqC#}D<8-Io$a>M}`g9HZ(IElkOzz1dcQiwv>}|_CH$!csNzq{ zU{l91B>bsTlmR1B07Z=e%)z|)u^457Xc5Vi0Q-d@tVc|Q0H~&1a{MVkA)*vHRV%#W zz7zNp@R9RWzgGV>_|w@J?^gfdPxa^(fo70X4r5G*K{}ep&#$Gu2^lI~RSUHkIyXAU zpN>^SZ6ruA9pMb1%7Hv`fIk(oR4^Yo`a?XxpURQ&r$h4@kA*+gsgL2{WZeGfcH-}l zZ|h53ekR`<{OLUTSE|3I^8-;YH){A{?RJGfT{<3pTeaZHeO36=>6d2mYpvpAZYBR} zF|O=<)KdO$TeMma-pa8IvoEV}9|?a=|JChekW=udY8Ui~XnGDgEjfDn(7Ja=bQ>A| zG{a`mn#8wsfCl7X)UEi_fSd|`+8cClJN~qFE3dy*{OK(D*VG@QhsjR>%LLgKtC`ik zv!Nwf5pLD$G^5^8{AufTIsdEp(+87(mH!R+Q}qStM1q}G@TYjGYSoP@fC34+C86nX zaAlCsx0qk?{>i*lzMAp>%j@;KTHdO=a{j4ltqtZe#!{dS1UM{(fGrVdHgM#_M k{Ld(|O`=E&pG!EC1IMzH2Z@ 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

)EJK9a4$?ZyXGQpAh_8oEM|4mVSyuk3vj^^* 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

O??=sqb02N6zFuB%{6K$@(H~!Fi@k(Ra9r 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ℑKYdYuT5e=4 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

6X4;&e7sw@}AI5_d9+ zKN&-xSMHZxk>&Y21|BBz8&x5%@Z|ksJn~;yh+dY>58efj@gtU#;F&VDAPL1K8(>g$kX0#1gLWb%`*6f<)qe;vPU4=XpR z5o4&1n_VR#5#lgS-x-)|lG)$pOjDfdDic&z+{1(aC)}DzKt*kDb}s*a$2nZ7`{lQ2%Isw%e2>biiNX3y2LWok72 ztBPo}XZVu*K~K#_p}P8UhE21_>iSO=N_{oz-(ong&Ue0St^Fl;gC6k;YJT?GGJ7Ya z_qZK2t?lK)GRkK!9_JB*;^*RbM_MO*QEG?fr5GXc zHg&_i&5yzAFR}C1iI0r|8IudzF*8_=MZ%g=Y_k{%dV^L=PK!e4K%+*=+hlS=g@mr*L=L491dh2 z#+l)oG%l34ts5qDcaim-@f+6=xC`-|w;s@A=@*{+O~yoJG@Fd&CIbsKA4^8-5>9JULbkouROiqMN^~f3 zN$1dql;~C>(K%GE#2re^=o~sxiF=gzbm!1XO5~LIc;}F%#DEf~b`Eheap26}YTkH& zY$Cd=o4oC<^I`SNB3k?jaLm(C>wz0k11Y*gJz7>18{Uj8Sed#sD!s=S< zhJXK1(5K(=hx@by8fB#eiNW+~g~@o#e7@<^DwFY`$uNCdXEN?G8KzGgO@`b#JBLi4 zHk%Bn0U4%G7n0GsymQEW-4Z2={n?>Ju|K<&DE8+aN)-F^9wmzXnNyBD3m+pmW&ozd(X}|oyFPhBFdnaY!{bo} z{TwqMbtYrfcr==fQRC5UGDeMuwxqzlHXM&7CS%libdWJT9^Fb5$KwtqisNyQ62Hd;Olk z-W*547B$$SB&bKR9iR*noqY`n)WB3-6K4xJn!kxyUJ<-554Sy*Ap{?da-;&Y(v#F^ zK36SE(D-?#NpJTB{^Od!QWsVwnT3C(NRlGE_|?bU$uH%Ut#bL5$hP6f(fumLcjzuu z6&DSW41P4-@o!L!NPgZV)9U&ci4mu2Dyj`ME)q z+dA~N6!AP1wZ;QE4Mf|&^p9 zvh$XnfZ%XKsZ%}AoH{#C-?q>^^niJ&Sok=zp=G#miz(a!&bbBS#V)2Sm-D!MluK2y z*dcakYLHpdQv2-L++z&7HDUQ(@9Gx`q9Yk(+}X^pH+1viV;K~;efF^FP{B9vr{&m0 zUNL9>saKrpMp^GTdBG?M2=vghWxWQNTrH=vmglW=Hd(7aAGW;T zI;Y=SRYOXOVr+O3Af}w9)n18PJw9w!mvpxA$U8=N8}!DddxEO2*kzsb%(b5s1R%!% zU4gavoXyux@rqlFT^B5$ITc-E06u z9z18JUtXHox-=Tuw*74xMO76#@73%0o#o-iBgJYHB8EAF@ch)e2~zi;pGr?Cqe9!C z@%^}eS6Yhy=&=44J^U;WIB~IAnQw4c4uy?$9)U#!bqUzx znt(l)2O+n{$bXQL1yJI>e4`n>)SBuJuE~0_m=&to$Pyh?DeW?M2BkzQgDirIa?NpZ z45J8X?KU?XeUuBx(DM^qkUfx`Do%LI-}s6o;3N*Y%7MaZ!EmmP#+@rwU??q7rt~Ck zZ#d`G_UO?T9>soS?BYDA24!-5!#r<0yuF&t&ajssD|0Dg1U0FFkc}3H38`bXbyGxk zHNV(6JcgNx*ftR=tchvnEvsJSZCS)yV`jLw&dhGzTj<@ARyhvF=5J=lb!DvL)n$4Y zv>uz=($B*=6kVqnTakUdBbK$EG;!PA%fig4$IYw^T|ZojG3cxD(5@?JfL0ne^5g(@(9k^0puv zsSiQC1wB=G0@*Uu&xZY5_$^sbwM(%ju)S#aEkv0FWNpW9i3o?ho@9XCmp2Wi0p-4WRcN7lyBRYb<9`_zuw_45yr5 zH`he`6ghCROOF@M=c^^3hWgSP|7!O4`=!?h&eM8b6V$skTPbdsRrpxa+nB$8HWZA* zIc(NN1QU#1o7eu}SKjEC|1d=3tbAVdf(-!B_M>)o%?TwP1oSyl;gxqEa&C-tw4Qj# z`5`|OIv(vH&zNeSTJgK08hK-AUo$%855Om_+~04=_RQuc-x#Cf{(56i!ZJ;Zo4hUN z+(HBf##eIkRQ<|Con2prj8^1QhAq}crN9ib(q~Q5O4>toMJ{Aj_}zd0$A6rK^JXSG zScB20^Mg*E?xqd&Gyz=wm-=ZtVZB@?Z9XW^Vd3g#e?SQ zaR}UcdN61A43!SvPo!2Z&Nw_skX2(w9sIfNUk(P~opH9`7G+fLq5m1vd-<`tPSeLT zw?vqTU8)TMPnuhqaV3Mr^Slpj>98^z$%*?vEN3)r>eZ>G7Y@|+TC3Y(G&wKyWIMJa z8$FraU2#B6E6>!Z&Gss>%;us&DiJ$irL{CK2)Bj{QV*D|g6Pv3_J+HRx(3MOgS_d( zjz8JZQ+E7b8h2n;KV~y?SL`WPBf<4myM|wC4SLVyTj}k^TwCO@V}bQ z;*gEDFA6Ep*2URvYMt7ZS)PY5xY(3!OJeHi|&6 ztn^Ac!RxKxYKi}a!`S|E+mQ&|QO=HZovto}<^bpzD%R;eou4vN73BmS}Av6kf)_wq6-0YQ>sYSaKp;7sX@ytTm6BRB7uhvEFO%HmPXq z=bYG6*4l298sGZA9Kk~V$)qN9e$DtED_i4>IlXf@} zjMzO<8!d50{Gk-$O}C(ZJ~hK>c$f@2L{JIDWtQMcR11Ed;Dy5sf7 zy?ty_cI`H=aB7HQFVX`%n|HfQG#V`O(&cLQbHZX+T%_1m1feT?-Kq$TYe*be=v5S{bP<7vHh9TvBt{=K|c{O=?q6O=-9xDeTJ+e zq4d+$V;;a#!b<>huQp-x|p6xxTRa;`ktKD?uF4cGSlY)>WjL+0+4Z4EwV8&i?}5KG!*JQy6QXg|dIGZ}XU zZi@Cpe5c9y*C4`@Z9to<4pj>13FnqZqn8T;-(jLc&oeBq$c zd$w4c{23eq12zg1k^!#HnI#KeVGn)JHd^>seXjpu+yAHcusVfLaR+eg6%-sst_K%m z?2+I_T>qO>li6>SCA>fQ^UFD}IO!GgPqFtR6>YS->KO>XsnTCw?zdIsA3vFC<`ul& z{I4m2#A2l@C~$7P(#p!=FX3O(EUyG7Gu8FK0?_?@I7i|0D#7Qi6vz<`V=_B~1v$}1 z;}k`@S2yPufrBxcNFYo}os`rohm`J8gC4WeGRrlk7E}}1dQbb8c^E-M7^c^@b|)1J zkIpELFG5cHKbqK}*W2(WC`WqCkvG@F`~d9Pz3f>t$Gjubd#Hw;d(mlZgeBppAJ9(` zJV5d>^fW!FU=%mL$YR?I?91&d>?`4}J7^WAIgWC87zI=ErlZzc89E1V6Slb6o?(32 zKY|1W-1)GJcyPAs8$X0e`9Im1yL|j_d^gP5Ssg{R~z(4&9GUzhVuD4 zC}`}I=A13G(LT`?zB|>M74>JAd8PRd(@Z%L?FzbSv^{;SKhqHP30ksH(2^y_X4gR$ z7i$cM#zhe3iHm?i<>DvRxu6W%yx<}b?~|$Prn&x1I`5ySB4jazkzhF6a;V9#ZIWYL z52fd(ock-9;0V$`CY2zJNiE;^$@H za$0(L{)$}wwl7U!JLi+)xI}u9gK^qyb?v1(H6y|9Q^sdI)kzeRm*wQ?bj8qIf7;Ms zd2xN&{^`|}<;0J(-r^Gu2aZRIuzguB{~FcPX!0Lh!~mIZQ!CyY`LIVQBJjpzrv0Ou z`&dxxWv|oP1Ip)VyquQ(ay$xvS;qxRiS4qjrkw3LzhK2}j>N96PFidK5fUJeGaQy) ziQ0Y6r%K3>UMPtS_CQ54l`DK36^Z$_`d7@y>>iC5F-C3>SXHinUDbUH=?dm`zU{nl z2`1T$A&sB=29SmdZjuK3lK;e*bToge(%R$9{j&UcrOS%x^88ziLr8?VUy=V4X~%CW zfk=AsN?4Qjl;d+;8tm?6{J+F+LdDg7p_{#YYW<$*b^SZpcG1xzzxPU|*jGyeUjdr1X#Q)|?#A9~`}3$_2>c+_W#@5s@cPm7cQn24-0y0~gPaCHr~6$h&R=w{7QKTS z7^5b8U)*0P+|!dMn*|J!VjFm{0cLdTrWP=ms+jZj(BwUp1PO$EGt+PV z)Km;(2U=Iu??FEYBW(OvI7&G6uzBr;+2p4n_sJKUyoZ}gub|nuRV1OTRrzaahN4AR ziKgKkTMA$D?_0k6DfptQ^ZoJ@2pkSZ2uSr!>i=Xm`UBjiW+wa}>061>!nalS$YcwA zdW(E@l6XeeSsB@D2%!}B{w#rR26A3QU))H-vKzlnUBm{@UU{6Tl`z(w?@S7h*|Khs znMP=pwtr;10D-z+ArY25qdZR2`0gL7xajBqPIx8K+pA*R7Fll&@E;i9l3swVOSbao z?|ZI&l2QXimu#Te(`0>zg5TZ2^KbI}cL#LQ8peceCHV$whl#>$mBa z2CV3aOGjhd+po+vj|(s7Wt#~(N$$4giEJ~W-OS~evd!be%g<(;Cxm5dvdt62%a3N8 ziKu2OJ6XS-xk=vJT>K%{V_o>Rn|j<^UW56d)bZNN^Ysk?A23J9>#VL@HN)Wr8W?=| zbMIY3$QVVSylBGnX>k8r%b4m{4-Q7c~(nA&Os0__OQg`q3f6>DCOM z0LgJAp)V@q%nLMa#yzx`xj~C>pBKJ0hm;7sZ#C~cK zl1dCqeNOS0>XD8gD<3vt6Q? z$5~VxBl)t=!}i3UU9m@jN!B2EbiTr*e+@iCfFT!Tpw7G>ocMqN^UuXLvYuZ& zr*(EpH)9}9GXsuv1cRq8SO_$5B(<0W zw?ou;pf}GgMxZoikC1=_WyZUIkr&0;*MLgQ8P`=GSyS z&q2rq4nf}C$zq5VI5p-`{JmK_vmeEDmHrJ6V6Uvfr?3WHMSX8=?*`S4^DaSath97k zCPY)*uWW#2ZqPAb4RYs=*Kd#4Zg*n+ww3I0BHKETpsIX6EWY@EP#kxVpNGYl{11ww zp!`-?eChw7IJ(Ktn&J;sckn&`gC{0f=|c$ibNtGxIevN72Y+LkmDv&$s-qAGz`nmD z>|lk)3Re1hEh+D1?{RcM=D0-l-i*=5$Pz@@!~8*9%%7% zTo3kKi_gM$wrMvJnTBQ`1Iupc`tB$m(m}eN&EPxyhv-Lo&s|nMBPgxvH!-2Ef=hYt4;3C+1CRtaxl!+mi`D8uGgcq`=J; zWXAC-8>}^p(fA0OTo-jBcNr3)#aSm{gh&czQOu0eq=`~?Ha3Er2<#HF`8Kd()-_|UoxSxDJG4)_!JNcPIm5b zq8P5m&37yO@YHzrq6j;O72n1Lj^abnHmIIX_fp*KAVmL3c#puJLGr`>qsCua#=c>n zJ&{cWUD-1P?=j37yYxqDj}hJKR$eOM#~h^vU?^Wob~3dwZ~;$vXfS&6hd<4R;7=6n zXpik}3cM+s{4d3`ZO4fjMC_v5qsH!(oqY^{l+6`lw~ne}|63@e9$~)J?@?$#w0xob zKFgnXVhJkZ6HA~8_1No-^)NX=_>R^ux!I;Nt^K+Yew%m_;5y1?^PdN7f+Kk5p&T4$ zj=4pQxZQ0}E4oe{!LMNDrSgwGx8g^P?es|d3eBV%q7tAp7_W)z#446ea$+5tu*=Ug zYF0c6V+Y&*YF`cTnccr<+G7<|XzHa?oq zHLqW>lJio>mU&ubem3%b=)!(B+8<(mae~OtXyyK3d%UZs`u;(602V1`w)z8M!s;orbmc5f%ve?i}z=piN~1@USA^B z11GonW2zYtN$1`J`7?enUeIx-S27Feq#c*wew>Z*l}G>AlwG!^tlQ&AKg=qd%kn!u zc??(I_)rs$>BS_+qUy4nAY zK5Y43e||smUf0LWWR7nL90?Re2c85>3!Vh9YzN%V$m*A9@uIgpp{_u`wp%kzHIBgp30xPE+qyNqe#CJe&uth>-@?u zo}a2b%gJ2z!>O$>t`}6vBzR5JEP+fS1I`~kmd6EjvKOFZX2Y~9`)YwEXd&&l16Eh*{E2L>~L zzZ03CPxpFFo2<-SCSH@y2I?!*r>>2N82PiyU4QuoV1J6^6GIMKzQJ0PV=jpzf4vOK zS5&-Sz7fU5BPb^581B<>z#@4?9 zF9OBpguv1{N1^AOV*DG$e~auG{0+x?CH#1W%bw9O3R_=0tBgcx>$xP7wX@1eL|e}x(Of&Lg2edNGfB*=omEL< zLTe?7mfBfUNla{=NMb?ltkb3IfMF(}VBY6T|3XW3E9xxc*;WwO8py+7aj+6CqsIyNX|4SaF8JcBinW`}TY}8R zWL{+|Rmp!3GOsSa-jr+)GMA8f^>E4m8)UYUX&Prrri09-WVQ~MyfVmKMy6@KF%^QZ zty2Kwgtptr;azr&z%J_+T3x&0Y-sDkju}>o_o&r%E|kg)hf6hH@7bq-{$-$<*OK~V zD!s}%dsZ}r?{a5cYrAq6lPkAlfqKa;C6+U}SCd;lk{fOPigK5bTQQP5zIBFjTgjCd za9G2H)=w&TDYuflF%>)$;mrmmM#Eb{su)`#(uPS$8uABt?)oY=SyA6KDaMzW7G^+cFj0+Tbmn6MrT zi_8SN55vg;1c9BkwOL2r@XBw!X&(e+N| z>de&EuOj87b43tUc3k z3$x%B_{34{g5Wu8#CsNQ=MVhNRPotYn;3Qu&1g_7>+)Zsh%sAhi$6DBVP%(aVaAce zWceCCgva=7K7udK$@Q^1&E&;pPrW&Fx=Q#mLcL)f4%b{}z?qtQsEqFk0|Bl|Zo~z9|1Vx6b`;&9avW zQ3n9_x%}_RsL$O8e;-(HgUBXVTv_-jH$uhy2jV@~v)q#Y$ED#aVI>+imYqN0J$zpy zmDw1o%Ft42?S9QTeoUS&RtXLwOD062lq(ij>P|SWZ0kP?UuF0HG5~PvWHuBL3v|k0@f9a66pU zRa$ycG}H$m!@lhL7fy{`6t&iF(~@QWCS$L*^%&Qwg!eA}4&9Z80F|rWDe%@(EoFkr zT@|=2bS$gBR&iYyT4~7x1n^EBvhLnYkJ4abqW^gumyN8>B|O_~m(Hk`v~WE|IkShO zAo-%8cT8+1a~{K!R(gQ@s4AXgmDj~Ht?8+)PQsthti@uXIiF;e3%z`f`kpgWV5g?mAmr)2?AU~g&m2b=dAopB)zU%uVnGML@)nI+&h@?j=|cX#sD}a;z6v9X0QKj zMwO_I3))YJCHcg)vslW!qLGhS=xs5dz4jc|nC-_|-T>ILm#79K4Un?dJZ>}%Yz3Os zW440g_eAbWcQcdzzkJpo-u$bdb!(xT=3)=h7Fn17Aqe@%oEe2`(FFY)_U9hMZ)5)g z>!iJC16`y=cn`m58e9*9BT%pXXQ0+-@*abYf+pMBIq~A|O+}ZNiwH6c(H9kMXuk|h zOd|D6{UKx20+UC?M+`^?K4W*z_$@-n&L+R|Q0H!*dGUg5bX@xsqYv^=P*lUX$LW51 z62!ZCRecI@99-R7D>k!lonp45v6coYpmJ(z2n4~Q{YWxPI|7paBlJ~++sytCJscL0 z*rN6%z22nvuzCq@g0YvtG<{{}P^;zoGdLdjpadq@oAE|qHV6f#NfMZZsX=AKltB7O zc)Q3ce2O=X?cZTXaAPC)o`mw=FDq~W(|_w@*vY5Ta*O~;|GQQAP39+^j{!Bzvt=wF zN{q>f=3i2V7#E(BHN%US<##HtY;<0E{vq-d=>WXb>VH@F_)XVx9DX9d)77^weF!DRq>Tj=pyAxvQE&^5p{ z``o!xtu^P9Dja03c6X1_KN07~%@&nUiqp3coegXtr*JG@>Za^z2`Fn7fz;4P40!hR zL<(nFFOC_y@=@uPIR3=#+;_nB2J)L$pjyh7XN|h4c2hEo2H5RzIdEWbKPvvawuu{sn&d#$dYQ@@)+(;?>KayG8Pq_;eWsw(L(A3zaA&gC17 zF=>0ACw8G|SV({+F7p?pod1fV+sP+V=^LUD%S3A3D&hB&eiStX2dQ4%f@-JNKHdz; zZ`uo+gSKZErpY1~{W^m_E|CU2RYt%4$nifzKdnV-Y(v*K89BVQ zylyZD4$V9aUzYgISCCUwc z2n(~Q3%2C*h|$^^ZF|-Bak}8>a0;eRpkQD0N9JArNk)b5m-i&R@~0>TB(eDLGN{$b zD6n>cAh!*779XI`*$+=VZ5-;Fo;ev(Ir-{?7qJxP5e!RH>_1G@DColTz z#6D}SZDtyVebwY~(ihGYs|5r>pM`N^N0Qcfy*7wt9kIUsZ96-YAlZSV;xPZA_*@xu z0MSmmb+vjW)uGO2OWw{l*h8GzsVi#a&XT5Pr1o>RSvSaaAUqnw^skl@QRO&T!5mRi zQD&Xfd+igZs6ftuCYjf{sEUDsbB`(l9hM{6x7BLJUVd= z!&bL3QJ3#UKj&&%n&%TK=Rq?!oBSwbAe{;4r|~aI`lq9lJW2BtHUtel?0GmZ_PX;vYioz;4{SZ<2SO&*?KBjr(= zdb`<*(3nQ^^LZrppx(FQR$SLMu!hu>{CTP>F5idt&r>B7;Iql>*Q52r`qLmvZTQ8- z+9s;D_UMXzJjx@koBef^B5J=X55F_N_ls0MWjJlN#VyhNR%Kr@V>my*fsEMlk`;uu z83v9CL%BPDn~IL@-nBnw41>EJ+$}Ia;4p^yw=w&}%KhsZi{chx)wU6a|G^GE9Z+gU zTra=bJA&Vv#M+U*H5dH;bRhWs#ople*9U^%2W6QNrql7iF+J()G>q&*lhwEs2nZZY zABzS0ymB=UxZXSLJ+NI{$efx;&5jBi4c}+>8QC;0xXx@YJ^Mx3^!!rZl$r~3{%bWD(zaN;8e10f zNStrVnD4;zf=}>o*;rMI&=N1_AT{^HIrs2DC%}hDKaKBT+lnSi=PdTx1z4$q^#$rK zIq(H|3P_>xaevf_ZN`92Sn7CYEe}Szy#p?42FNnlk`sGCsPK41rir-N6OauFPOoA63GOFT`F=K-S~O zS70$d;Q9cFWEZ0TI(CFcu%tLxOdrbsS2?%&_!rdVuWnKm^IP21tZAwWDXh1`l|ywD zKiRVUv`=d%)ji5&qm6Dh*;~c^{AYiJI5i>IM`)!#ztObcMD@4M(z$`=M8O3+xoX)C zJaz}5))s~3=Md@1Q^=iM`MdV(-0US$1M>!%#_97q8<+F0Fqd!Te@>K9UBhdJyC>)2 zyy33b3v|xh0)raXNo+bVjM#fz5JnDM?>W7^D0;*9Ch1+#-w`^T4F=%CIECR{N07Ov zzE^JdMSrIu1(EwCaG5u(E1!}@$d1j95?2lvDHbnw9$2-@kx9)Ar~ftX`Hz2ScxIa+ zi7(7sWSNp)yjfFSJJq-0gW#(cC%v!l#pVRJ*oFmZc?*-QG3o!p%xv%SUE-|FjQF|3 zjOdHIY8B&t>cdKdvPyVInKcz=a;*yT4gfO#&PV@+1O-q0Z+?Lcf9`(W#8PtqQfh$x z=B15%LXE#{RW#{O-{>uef5Tj*6*PT_k{nun`UHevc-e-0@`Pi@@3VMP@}C#2W)t(C zlFnuMVkz{_hY;&rB{#+yaq$Bj_u_JpSZqsp;>*($p?}L4cOIW$-S8OKN$QpRkI}a2JO~^mXh`s&c?yD}r+}oh zj*38X>$1H(m4ca^znHBLQ~^G_8onmF(JhVF+1c~MDE9PCc1D&;N*2wszQZBcDEvW1 z?s?ey+E%9THm2%U$2z$O#QP#*irCg=pj%o%f?vjrzig{DrDvvfO0;CAbsFcnf$^)b zV_UDeHyb@o&V1?LQ?HxiiPv_}=juZ?KZWT(F*P&j$1C|&Kk9envp%37)PL1}){VrD zEdM4D7}eRC8^_Npsxx>tHl$AZfTz`q)BNT2?s`2JK6JyF7rwU(aeJ9Ot&^zAm-t#y@e->B2;D)b5h|-V-Um9_z#|k04ii=R!K~I;oGk!;4e3TCPfE3#qV51g zd;VuPQd24p@2t7s)PT)zm77|nO~3Pjl@d*ebN((r3ID4t2`q!&u7qFCnY4n$HsvL> zzVS<~{3h0ljWV~8FMSnvdZw)m@-V*DZs*d55-WYV*_qTF-fIUAD~1T0rZrWWrsb#5 z9z7Ji%1!-9Ez#P9O-=Z7BpnUpSMo-vN1hpFK2X*8O>EG!mYCYj=LYp{`GM-26E=OM zK818DY4T6kml)w8KP{{jaBx`6_TJE=cFzkZqQIeK`M`!7s}n!44-Yo^=QnU<*=M9a z`0 z4q0JeaF?jIq~F*OeCWvA{?Z%rQ-kXH>e9BKFd>FyL}w`RGKq#fIZO&iF zR!S#ID=!H%fgF#cSn;K|-d^r)duyvzREqdgn}9H=RY9t}*easMGsJf-A|iRdzkSXm z0cmgl&+~usQRbX|)_z-i?X}lhd+oL1KF7ADxA%b!J9pL*{|F<6R&Clg(&^>kOwC&% zx4*SRMt_szlXP4E8vK86J{DF2K@O9+3B>^0SWX_qjM%y|bBaX**G&JCVfuzR=DyGI zIE)?j{sfa`WSy8dbtpEk)M;d&85HE9QsaO6#crUm0t%=f<{v?NuoBI`QaA%QQ>D{h z4W_Ox!~TWh@^@;in;|V`QD^|+~SkU-{CZ(!~s?Pi7z)f(wF zj`U)S`pIHGOig6Jhhh+E;`C5;p0rdOJ4d1I$J8{ihh}QsG!=Yy%hR^UrQNUxTy7f5 zxM-D+ftD_nBZgy3LEWBrrcu@3#e;7#UPTQXwAFeWXBlLVOWp=z`e8wll0K=2j?S)2 z9CmO%5ztszkC>m)%`ro`6(TL&9Fn8kr5uNAAGjc!|LN8L;u$8`jKB$fqjm{f(siLpW0Ma;Yk{)Oi2q~rCa zHCPWGMD$6=hhf@?&xqzvL<40hIbz`GGMa|(?(Oh-$z^X8#8zGGXKuuu{-lw^bm%Hr zD=TlM$&s4#XD-O)`|g!S`&521tGYDXd!-$Q@_r^ib8Q3RRt|K-J0qN~XR8)NVVnmW|k$d-cq5+0nlvb5Z_u;;F2n4V@k71MIyA zo%d-)e&@W;+0ot*To~W~zj*1=UyTab^SsYN_Tp!;?io|@qbkZ@OJ4B+y)aQKf~oJn z(g!oL;R`5{PkmLEP^)z#30BJk{G02oZ(RU)hXBh3VD3u`4aZykET5oYylfU_prRmD zgicmD*(ap3%VPWjhO?9951p~i zDIr}*^FOAcH!Gq5^ll_ImA>W-gN2r70QQdN5dHjdrW^CIH@txok6*Cna~NlLtA8u- zgke6Kh*epcSi%>Fj_>+* zioT7n<>SD4!-J2fV5vlHDCKgU``Ie%7}3?L&xRMqqqlXlg6{`IFMGiIzTZn!^}b)< z`w;f=@EoNXp%Xv(LoO*E`EYWqV0=qXPV6l`L4^p{YzK87Kl$PM1l?de{B z9Ctr6oI38}v-=cN6p2}zFJzu6p0<)A3PQKx2$Aon!>nGQ@d@$03> zPE!#1jp4&|9Nw!o=mqEauk5uJKgm#&>noH$Wwo{FR=rwZX|rz7^a5^bPL;m#f%UEJ z33-N z)ZQOh1A04Lrq?0&2;nr5ewXW)-j2Dutd=JXBk%YcrC#`K$A1?1MbM<1)ufm;eUF;- z4vo9yUD~wP1Ozl(m<51EK(tyVTCEbTR*6=tM5|Sz)hf|ym1wnUUOi5lGY??#EG17E zBWV@;f$_U(>Ltthr*4)1V<;HugQPMgmDQ~>PDa#!Fl7DbA+Y7F(^k3SJ-#J7#eFLeQ3j?O$7`>Ix+Z*pn@2w6_ zw6YjMUvFBA72G>JG1R(+&;mbN^j~0A_(W8>sPqE ze)eB_AdyKh`Xy9`(RUmIiQOLyNK^_3JO+$jY=oKZ(CB-P`<5Y5%>Lj&2*`hdcGCLB zZGq_VB2+s*m^ZBjf2^MVWzBEhEuyGSaVWEzGdZwnjGz3QtenBW=b4BGcU3k4#Op83 zIUX?ECWh7PxUX_I>WWGULk=DR3Y^ix*531Yu@eK(#0&?orvxYCWfW|iUy~ijdBqN# z)muu#_NX`psl?xO4GRHVzYGDmG+aVT{FVFUn!VKv3Y5X?9#z<|F76Gj#Glr2gQ_vx zw(JvQeOZk=B6~&(5l#-UtmaZBzKZ2bRt2GmWo$)TY>LyERf(uL8`6sf1gd zwpIUIRqOe|{4s4KYXV<*R78R)ObjvWBdJwP@pWzaLH7Z##;m!T!I{?X-$*lIEZ@|z z2QU(yoEHPg@m@^5 z8mn0mM2x=~=U@)*h`Oo_byXSasxs77WvGkT5>1p0&kd*xZy1pzbj@k`Ffs``Eb*d* zCmC#~m-D-c9{nXig+YU?MqBf8!wax$bm072-V2S1xrCsaOhR4(4VWzLetSc&B6AHM z4EWIdCF!@&@b5J(lxHE9%9tCk-MC+#JPj`p6|Fd#9dkm0ZHuJa=HD{Ih%!79#07n_ zxyQSVMnCBBei`ro#yct+0rZaC2M^!)DO64T*Bm3(^iA0Xkly1Qo){pTsQkgVTM2l2 z0+-%2CoO7N!p5&l@5d#p8Oa;xLoZ&dIR6YIa@MPGK{hryp$SoxHk%zT6FKJJ<;8nR zZ7?Tn&Sm0g&O)&V@#kd(pQ)uk)tHtpG{^Sk#Vgp)D3ow7g2l?X2mSCsScKi8M!a|h zyHBwF4D9FNP{eVZhMY&!%ecEHUd`nzmu$dh6t7+rb1zvz1*LYo8ngyI@{%nWdU)={ zm+g{O)}l1oS!=Znp?_aeoA`Kx0trpdPQUY`N!iiI%B5gZc5d-|0wN?@91}pituC?| zCAt|V&9I9(Cy)wR^vYQD*ehPwHW+DU?0dljOxq5*_AW%n_?GLQ_Re2Laghz9&R-EY zNuqMpCL6Z6AAqm2*iZLipKT!iWgBsg3z3dLYoOYh*6>@H5pZcFbd!F784CS3@BGe@h7T#jIgS}yL)#kT-0ZYX?n z)inp9ePnJ(NS&EZg~)29KesZifN6vY7qXvRf$_S`W{lfJLad4bRZNG1lx0zBS_u9b z;Gz&iL;-jS_rx9q-grs~z7KE_ilL(b{9ssmlerKQ!rw?f;ME(Ln9FH6v=c}@yc2M0 zJ9HCYL04A+A{w_AxfGmiVEo)|pzUrb=>>@6r_RS_K67a57$_;W@T0oO$DFN;tVh~g z1re<>)U*2Y)Kj(ITDKkos)B%~w;zgzM#bA^Kgp=Bh(+dYiH(}KoZ{{df@wm-TY{ko zi6U0L4f|ibdJALTJph`Ix7*osk+$YurY@&*BBZ*8Ert@ACJ!z24N;?)}p8G^yCd4-c<3~>5WV#|Glp-X>CG>(*q78&+yPBHO(v=cXgdnw;m%k~$C z5zGu{n|F*xMmN^PumIe+mO&2m_v{5M0ed;@Kpwl9Fk+nxtjt$PIx_l02 zXkVTCpt_nJ_!EIpXxPi?+J7`)W+&1VH3sjv_47CP>;zYv_bj#tnACjP(l z_nAU}Z~s5+Z_soC5nyX~H`ck^VSo53`AzT2_jc_>SF^R<-3@( zS`=MRaAD4k{=*-rB;1yO_kYU^(}0Qmn%u3jNAx9U;I!gD@exZlr~XL&@EzsJhaY~$ z2SUqyd5Mwl#v)=J%IL;r)LO2odZ;$kHm=B zsKl^&9G01aTS+@%1Qy1;GW+AzMKCR^pLQoDJtpi|o@o{f_R zyUd+k=9EO-?-2xO3L;!Ft}inw+i}NKsAc%1yB9GH$CL|WnOSr{oJ&%WXKOWZo*th#J+WpwaT6vDb*(+=Cvw;wNUG(F4D&OL}+s;E-`}Q(Z zMSrpl=)1msM|s~vz#mnBA6S4t68J%ffKPfF7Uwv2S5ku&Jb>-;rnzNmbQJoWsSiv8gz)i3uU0M(s`E}a|Wib9((ymye~#Eu{?O| ze9ye;)C}L==k1Zxp#k|ayoxV_isv3oNo$P;2!DB1KJCg^BX)*ox*)U(tH4>ORHS_75Pg$p7G-pxQGX zZ&HQhjw|QOXXeY6@XKIQE8I(~Ovs@sGtayFOWXcn+IE!M_Sf$CYwVIf*)gh{+cdU#R@_J5YdyPApi>G}2DYp?p zzJz;ZyV^r|vv$Ay4CEy?O4?tGGArX>?bnp7VMlL$<7*s|ZQoTM^K3DT`890%!72R6 zr0jXc+#%lUos-HCf&YaP?AEbIGgS<18HV*}ywy2I39Yr|^rW@^SRzT_Ykb>5=RHQQ zGOW;>hJ#kM9Wcf?es+Y|74td{R_G`)rF7Jo_sDc;PY3fdgLqf}6;oC$IlSDM1vrsw z6aI-|)^RHGU(&NHY-|ZNTkwPSN@vX<8n4OEJIv<#F6(BM%GPfwx*&Xd^ci;Kv*u1U zsByjE7rY)ch&yOnJZjF_BPW0NyXPjeKNx90zE1+*AC4n=ojtnfG1a-wKC8(7xLAx{ z#}TXc;6Y?%cJkUizBXrm`g_e&Nu>QPZ}FRJR=4<%oe%r$WHvD_)=INbBir|I3Tl1h zdtS399U*R8?QsO~kH%W<@w~O~DQ~qCUh`%8*uJNXWQRK+BXT#+w2&BcgKsA6f3($} z0K~)~qu^UQTkSfMlI!eA^kOpq*Yp3BqSk5WSU1g80olpyZW6PDg#wa_fqjpKuQe7q z7p@2!BCvL3joSF8Rwla|?@Iz#ol)0-vi%!{Gf&8-@x7?DX!oLWCqg``@0B5&pB!_i z4MiIB@9AK=G1HPbBJ1c>6`&3jEoX^{VwoldGu&>f!SDLFyeS9>xjK$qLbC_xEnHR`?>EvdH+}5vxLbte=6Z~> z)9|tTsfHJK3mpyxIb9FubH6EZR&gG`(n9QF!dM2W zrFp#Uw0Dg0^h~HGBv{^bOe3%?9mmt~m-FUW@PYi{;Q0gJw=#bM(Mj*5x|TPrOdHRL z3RdO=9wY(W)M>t66iq}C3h40LMU%} zdwwkLUDz*~C1%sx5$?BQD|qhd<%RV$(eO0K@$j%&TULidU!uhF|1HnH1zF-H=i}P< zS=_y_U*i@9wCzPLbq$k;4sWaT#+TQ57gi+Qr`QW?#VEK9Fz+ zn)^R%)-B+2t~Ktq$aBsWZKkh#Pvm%^&3n6F5!uqdr%&|;B6#nJVynTJyo}7%oE;ys z94AB$_$^kU*cpe8ZSL2qxgK|~8=6Qjmf*&2cgnGIi^UW8uc)K9{W$2yQFc2k-a+&Y zt0t5;^xqb9?S74e>>R$m{N?X~sNi>OE_bX$CzRC$jl@s-y^1=v+2)4R;k%)!D}WOc zdZ57ExE}T&>BO-O5z5WQJ2K`utXw*z+)$4X6Wp8^{Lz#G^;h^;YDr5!=}5$ZKiEdJ z2ujFXjHMypZvGc1+-5-IA29aFi^we(OIjkBM938zPmOs~hMGzKLTUiPqzu>BoX6>K zX&{tol4Nq9jnQwzG~#g?aNLMmaZ9NSeTmJ3skypyQ% zmaZyaP?h;{YOCp=XRA60RP~%ra!^6f@>55c!ute;uQ9#tmY?bGiH>ZrS|n@?tLE2? zA@AjSSCIw!?(*k2y{EYN%1)T(KaX;KfOyf}|E}_kJo0nMO!CN0ly^XeuKpluFs-}W z6U4hV8c~!1nR5*%3LB=VFi|EdN;SqFL!D#$%|Dt;ZlObQ^C$n-i?N!B*Xh`PIox9T zBig@R^ZvZE0J5_yh8d9*?3_geeE({|CHoPCfWzxz90Uw-( z=lnTj?r2xP!cE<$yZdkCQ<_TS+vXfqGNm7`9SaU~ry#R4Mzuw24wA=$OLUnP_2fZD zK@;Q*A3bfG^94AX(FV81tJgb`4wgPd7f>+RvxjgxvF6En*BYeO2TPPG-%js4ZhmM5 zpoLC$(1h}`BLDYqU=M&1{tUcWE5{y}bq3otf0_%SdE()Zkd8 z%^f#{=ZVL~vSU!}RuikeeZdZQQn~wdN7@^EbZ+d?0>|B*iJHCgXybgT3Cn?>a(+iT zku93QwUp0~&^k=cAJ;KR0ejP|ZZy zbN$_~2g7!S?pR!1opY*pxqDn~^FCQX0w*G%mZv!sj*h`Rq&bdj5!cd*w7cV@G{abc03hT@NkKuOk8}j#aB7VnB-lgT_?Re@SeiP8Eje>C)y8#_=FxIl|N`O87; zGj4R>NP6FcWWHT)tt2j`!uxJy;1-m+>sn)#XZkO{2dB4IUT39u7HdF80#;UQt=vuG zWIR}RMp04izUxTtAN&kx-(DU(9qF{ZOd-Sgb`-x~<98sxU*~razZF*IZQ7}urX?l3 zrssySW!{w|==)&Jtinn%wx88fj6fUCOeF4>O+d$L9+Kc`wfqnN#xqDZ5*-kgas1uN zRUH0J*uFv|S(+~*6q=o?{CdpuB$cYA?K^|!(@xWB+KKkfW4z}5)C{NL++iH*;D(Bk zN$=cpDKQP~9gOXV$v7J;;plF^f3G8;R)PMll~6n4TXkEqW@F>~G1tTx>U7T?ni?nt zn%Urv9hxh>Me3wGcGzxkjIVT~I>5~(NJuSP)d%8CW)+48i%HVExIB@2QcEsPsNmdo zpTUZ$*l`l;i~BTw>k-6XIr0qOUGrkhoj5evu$`Y_^Ktl@IFv0lYb7G>Xu{C0caNEv zD}7o;rH;_$B+XB0NsqZ!V8v-%ZtnjMi&SwmcEKYsh0au8?L&^7=$7tKn@dwCCs&@sTts_B^U}AdAjhR5JYy$geHmM}u25FEUUb}N z7NoBBIq4sj6{U_qZa|8B;UE(s^!vYkx7`h>?ra~a7y?K1p zZty0Sx*yn)^_zA?v2N|@Gyi)g*6^uHcD%7=n|6_Ewbn=GPkBVM^}r9uwAL5TANhy` zp94Rf*jisQ|3q)Bj>(yjW=U^i*&`LeRkv??$8P-rK1c)tsO^KOsc>m{RrG;1mNI-1 z1+R{bm0W~=7b5M0vpV;8E|}k6VxdXTKQG1wqI!wKVh9I>_ub%6*%k;{o1KQkMRv^r z1uB})P#qYB3iDhS2D=hH(Z6-IrA2wghf;gYY2nzZcB#Qc1hbqmGZfa>&*66){efDu zWA@cVtgK9=jJ@!CGmF|9^WH5YDT~ydRSMo zNi#Se65@E7sr=kBGkU77wsm&tzl7j!{t(co&r%~?59r2qL%3dn?&j4!@cn}S8qNaJ zMK(DNM|~dO8w|cVZF3O5FZ;*%R&=)lz7LWY(L?VwZg40QUZT|ax~)yR&lBlAk{#0r zj*(dHT~H1QmGrLJF!ur{Js&>M*APg}>iH*Oeuj38O}bzc%eyRHUHT-Zwy12{&{5y8 zU(YxVs0ZVsI(ZVIJL9-QyRi>$u~y>mcKd#=ceXN%Ks_NS=6{(0PHZ2(jvqs5MC+lo z@+iFOB89`{?{{uaV&Tl=LjUm=w(i%;1eN+mUBhntY{yzF2aZS`76kfc{5T@~zCuYI z)L^G`d(ZJYus0mroWyDCSCZ}y4!!wTZ)R*tE-i~izUH`>maQu(>d1)U_TaZ~jb!(A zEv7F_vK4fr$X7JIC7NQ|uS%Qmy%>FcXPy=LGkbi`Pb6p0^1>y&pu)S-eWwtm*e*Bv zT|tNcN8is)@2$Yu%3Ay|H96T{f9lU^*M_I#Yyo;h2*q7n9`~ZL$hH^^Enc&6F8bX$ zeF*wp62rlSa4`< zm0oOETdcY(y?p*xm0n^vTaWaL`GaKzIhu0oOT($Xb<>W%T+szTIcdwqfy@xzm&NtG z6|@MYUp(1byqp)NrzO<{jHDZK_K`{F<Wz9lus^iDCNhr*b9Nc?FF-AOon844 zme+c~o9LLQPEjVBv`1T{-&t}nJVDPe9|%88XTq1@qo&b~S8w97wfRRuK1N<-RcA#N zHR?0~w+ig&!^+OI$8U?<|B?~5fwco$bg+Ek*`?A~SmXvdX}e6NP)Jca67JW!cBw2J zUGt+0enBsNVm=(0iS0B)u}@ixU!xo-_PBl_#ZD>pMnJK4Id|&CA}?Tw=#zE!)jTtI z2uOBw?VprXKTn*co9`u`5q2^^;i=A>2Gwq4=t=^ry@bc>3sk#t)0=&v<+AzXm0FkIU1J{fu?lxu*#listzpkyb60z0xL5qT!=5+r(B8P=KZ z@l|)+U{gF1j)fhLM8`|uTl=lHnH6?5LARbJKq*wOs5{=V-j7Pjo}E}4%MLjvo*mn# zrhV@5!o@n_;<=g+t(!GH4B1;59e7B1v&*uRu?+MM2_Mq^ek41&Y}4QR`iAUBkWieR z91Ro7=YN5O68Dqvy<+}RSWzs}0)nspWYcGT{h0fdZ76)>C$w^t-ia8jpz(<{oBRL= z8^D1Rd5PyDxcm8qOKeC}qa;k)+I{_Lf7X7*tO4o$=F3^5~@Xh!!Q3~a^ z&l}GUjjV5_CIUaT6eD%0Tr=B@Ky#uZX-i4#s_Go7I*h6^su?M2%s;8H7T#5wt?!?1 z>%-;HT4kBT2dpRF06~=M^iq?``#*)3;7pNS^Uu8Za5ypE0l;+DN8Qz{GbBi#?iLZ=$^SG?Y zY7w)+{}B%hg!2D1FA6EL)zqE2$s`OOzB^YULhLwVNzyAJMqsXpty)ElG;+5lK!IK` zo&~k59WtU;V1BAd>I5oc#UvyJf7*%&&FFL8ie&cqKlIgx`RcJ=>8fA=qS%~@ zFUsj2Zu%bV=|Dl?-)zkEs5o$6s1R8=-mIC%Ubwk)(DBy{2>tP#nsq6br*ot6VQmg0 z<+ywOuh;a_c|mq|Q3xqtaq7bH{Ribe`~3k$!C`-jJ4VH+EdT7YjHo;3SjX)%{3(~H zR$*CP^lHw6c7F)tyUsYcy;oCy;6JGLp59eKuji>i-s^6A=b$A9NQ<1DrW7)Bq&nqV zK`&;g7hU%E3ZVkw+{xZj2DLcN?Q{6?ui9G5c%K{fZum0=VN4(n=MBrWug~+z{_md^ z1*4khnv|$NLFX03BE3+hzszeA%x9BuPDW*?xW^*Ssnyyog7^1QlH$&3+%Jipx>(-Z`j-{wBKy z;ri&rTx>^JOV1iQ{-hc%j&eOw2ezC-4LlyAhJ%W~pS%VO6i+9%AENjh4G1mBj^5?u z7IzoF_`u>hk?=YE)SIS(G3D*iMBG7hems0;8@J_Ho*nO+nK*`|syYW1Up0UW_tvuO#`cn7Q)NB6>*Q)@3jN+4+FuH; zlYrBl>}2l{{n)GcN1LYHV^ao!_(Pu&i(}J|kc5jz$|P>4E^bw|0Ol5pQ|ZsijSsLG z?!WS09;R1>zg6Myu<&azN7$w{y*^QhkMTYQ_Ee6T`{b`}FA7 z-7h*F%+_$Oq_6pACaA7{4ETA{8=S~atnlBsFCggr3*fTHdSmxI-#yIn&bqjk1MwVq z4Yr6`z#)OFbQ#~X$?Rp7Lv8PtCMXz`UE#jZirf4sZ?sd1`olb0YGIkEBBo?&7QVyQ z;ymq#H;zG0bYDTB891DqNUY3lK%XV^Eunj&R^}Hx4SyM(GU2v2PNV)pMU8hPyu_@6 zLb=P|^>Ty}u`)lQSb{>RD%DASjZ3hB%aLdCV!qXJ=VrLi{c>KuzM=fkq#?sG2t~B< zPS&Iu!*#R3@ZFvDwaU`52=x{B^VH>f!-^|IN%#7^u4xrLC0NNNTx+Qj*Fxk?oaLVz zHtSQ;blXK$=)GiRM4yON8+WDm&b2btys5`|OXV&}c#Yxxm}s!9t+V{Y!h&SFGJP=B zNWTRQ{#)CE-fOR-&O1MB1Ye2xOSsJmv(h^k_&EcV`XQbW(e|BvLK_c_!g@bp7QlA; z^#!rMulPR?04F5qY8Rjilj(@+(%TpGUFXjUpek{w5ERCLYI0_!cP!}pfq&1dra>*w zL08CcW`As$gvP+$u%^yyEHX3K4o>~Eg!KHZn%5a30;ln4u1SOhii(UCKH<%an#{4* z|5OyG1osBz;zi7fqK-Svcn0<BE(xMZ=lp zUk-m45heKIaF@+c+jxv26N_u4PS5|DDrC=qwoL01?o-`FE+==s$7F#^osH8-%rg@} zBt>AeZfgC&A01XSkct9}9OZ}kDYJ3)x@JRAV#oG!Br7bCw69l~?XRjvqY-9Fok+0T zkdmfQq!@(>5nGT?lwgMlHP1n-0WHd(3&q8PX{AUb868cbe?Qd}KB#}8M=}&+Wo`j1 z?%iUh4cS`yQB0j@GjEI#H>H--z4_G)zhSsSrcmG?xg}znN0$&p4Dp^$l0?3n4Xrd$ zZa^=_=6L|xdKt*nYnn;gasp+hNi@@HxrPSxL|Zry1I#_MS#_j-eE`-H1+1k`G#ERL z5|Z8kLt1uEF${Ck4+|8xNE8Qi&6SAWpxdCC6AScuFnYJpt0f27@7V8syt0k#1gRD; zg+g$83NLkxb4h~NTn}4!*IAh-sRiY5(>p{p!R(i*Tu(OOIS9p%p%@aA}RW(cn_@2bj?_!mWOH_v|I%`qf9M;s*X`u;O459*|l9E-ed zBJZSV%p&bS*Ll}4uMIOoMub<)@;hD(;5RXw>%5~0%4BL5p=iT&Slk`*AosyI*5ZFN zbUGQ=*j~HO6zWV732sR&@_!YUlBE=GGNKE7b=-l+S}pTQ3OgX<>)rH99r-TFy4;{D zUbD+ubUtMh|0!x$zYV*LyB%t!V}HCUE@xtAmR;QekHr=>y>hfamCDrT(dy@5%E?|5 z;WcR!vOIg<@kKS1I>zm{*jl8}r3{Ca`6;zxN{FN`;@{#_HO^`1WIIeP;_`lJ*a5lv zsqc);kpIkHQk(!|1wg{~%<^AGvQ@ph4@Qkhx?9Xq$9{`7B7kZjOu7E@5OfZpgf3kZ zp}WbrS{PFk-GMh-i)8Rma@{M8xlm2Qn>@=;g?UGlHwjOVWv|EkmvH7R%Qu_ zb>1;}ljVvTwW5x*be>_*PdSM0c&E+QdGzCmnpeai57l)U!}7B!;M5hSG|l4tnY<@F zD;F`6!ofT6W_@99ROMd{O!DY|IHhjJS2=%+X=81$bap)1rGEyD7sp7ub4qRgQu=hD zJ>mfV)BILBD0aN#cN6#^SR+fMZPg>qnPukZF9>ao$FXWRKPlMmh1=F~f?6g=9RlEa z+%)T*RR-rl%&6DU#JoQK43j&>1z}ek7(#3Hy35p5XC_%~@cq9Twe#c^aa#`QZ?jgO zbtt~+y(Ot17&*$__=ud7D0-^ym7Bp;3*)@IJc+(6$hFqewOqxxw-~vY)#|Up^kw`% z0}RjP)+fYXpsbb;z%lnqoY&i0{N=+bEm?UU9_#gcEOz|{wkB}EVjp3NWSGZlZhD>A zTwDT^Yiea+si#OHtL--F`h$;OkGo55IhKzc4|l+cM`!r@hVHu zX82DiF!dt4EC+K;1LzGj=}_aCb)|h7#!I-!$l%QX#q&Yu;V`1S=}vZ1#Gh2CD^uA7 zj;+i^s&02`uq0{DR7-rOO22nlo1&mIFtqi8Dnj;}Ot6MysBm3r3H6=N@)f5-IQAJ~ zg$?9U>&Y`T=^gRdaJEg=g}4{-`-d>!1V%Ft7|z=re;qKIbaAi5?|3d~_YhM|Tp%Nm z3PzY>#L0X6>qC%F=z=6@Kt?h?Cz(=&bk@HR#2Bh?G}owNAVE5|GD#du{P^P`(!+~X zGgC;_EZYM@G-+|@3IxKZ8ae23@yI%MZjQj>!Q{nlJ8ySx3g_anh&Oakb8-7enu{Zt zi|;WPMJ0^;m4&n~ za4oClXp%Y}k%6HvKsvxNhgysB#iV!ZgW@MnmI)^AMeI*l$6w6gIkTAQKOZLZ-}3FG zz-zYfqd(jGhVAb0PkJ^O$pv^tOVQJ!HG}mfL8iF-Q{NO*7xhk|SdBj9?!V1?uPHl` zJi32p2H!Mw;TdDd7IT;B1c@3I_r4T}Slj(oVWy)^MIuQeVn9~!fzY^n!+WNp^U3km zfWGO(dwx31^cp_RW)X0=i3Ks8@?>+HKQi^yk*iFyecat3#$4r34DAYjYE_V^L^ZH-Dlc~Qcui8gN_YU zIFge5&Cdi_Ia77g$n4{%H-Tp@t#)Le$Tc4Mh;4ybCIGmRyC*=#8jU zV-ne)NNrU2-w2D`u}6aw7Z^5e2aqMQ3k7x}e}5>SJPy>jZ1PNw-Q?MseU3YPSTT$` z?}dErr+@@j1I!Qb$wB}9zEzY<^VO)kPS!K_rpK}IvmzgsOUpi`znJ&4V5Ys?_yzA) zEs7Xl&~V3&loJA;7q^P8f~lA9+<;r=D&FB;)u!pXx@~kN$50xpbQ=dJ3OiFLB(h5@ zS7BL~D=#xP-?>>t^*!c_;Y{4yuCMy5L*q8(+34MLyeR(yM{bRkI$*PyReSlD(rOH# zl}!N1(AvvShAGRsQof;{F`F*dlHnB!iFqq3wR?o&CkX?M@|da_{&ttV!*zR;vz0%Y z=p|pTP|1V*4<44`GXO2*POruN@9(o;5EuGc5)a;I0qVHr;ATEds%~0qqEWhE;jYS7 zo{Yf#2ktziL4G={PLPGX=Gg!9vp03zY;X`%qYa8<)HhuiIDB`< zV)KpLNAzJoY5CiU(TG9mN%P(C5rNF=&Mplyuc&$^JL*u_dtYg-q*< z0Y7iiQl9?`z|eW*6fp!WQG(&F@XEUEcghf!+utn_`xz7Pxl9qzHT%VUs;q@SWr#(k z)%%lPS_VfpY^41Svod#>Qg0op#H@qU2M!l|?DT6!$w7p_480LGvQ|4rnwb9kzZX&9 zDazRtN>3VpR+LN%2<)y-WKVL`Wh#3VWt&4v_k(4JU?6fo+*^!8Hu_t#aWE;RCK5PB| z3QL;EcXKyXp`=8F$ofwi- zf&8NU$*>LNY$Q{WM0V)z$lKK&?l!CC*L=-2NnR3v@m3i%i7mDp@Q8_d%VLyb+;4x( zI~Ow`60opd&5M&=A~9RGRwEj`l)sQvv#7ww{jF;Q?yci!MwO7-`UZ(C>51xq73EWW z6fY7RVs$UdCq85{z2Kks5J8m|(UHPz&hJr;aB6=*$ihzqQfp-Xn{-}$Ig!2nPKrQK z`wH<0#HA&q`R|AASPgH|%3x$!B(zV6B7iih1wt~~_d>9r0cMsKE{*nj4WuMQnCTR! z$ySE8!;#0kOkgTMw=U@6Op}F@yQMBXli4sIvgh`VwT_Ky03q=zCBtJ7P$YwO zgi_61@=5qKC4cd9)7{A+u(Z;z3X7fw2$UvW0BwQ8E9D?^FpxIadBIus$NS<4RTOJI zm&19NP#$|}_rgdz27lAopXY%mD zIG7NM*pMxLo{S6mr*-+f-)<$H^8=lK}S;P+W4r19{;=h*~ATqT+K~w9^Tn; zX{=_awNRTPard=Y_09w*GH@eND-%}iDgV|&1@UO=*Bbgb$0gm>qD%k6u#G--YBs3Q zn1@5c*yz}GrR7De=c694Y$DZ4zrh%@hji^lVgaD$ol-6fEM?9(B}+|4qs(2tIv~T_ zRigV>r{vzS(8~=EY?(~Qx%EOlE9zJV&(dEZ!42v%Bd~x1f=>Uq&;bH0WVlqF^8{~n z{7ABA%zYD%aSmttxs$TgDY?EPu-UE8AZe*g{Bl7Cyd_R_`$yUWh+Q1c z5ot5gj|QT3a@1@uc}E%B{1?I=JqeVp#nD=M@v-rmzgP=@L|^is8B3OwU{9m&_E$$Qw;tZ?fAWV2V(Pb|5ce|5 zQUy%idsISgYhbSC{bwqw^{&bX_`IPb{W{tQ^R}?J<}dwYfTa6bH+83|S{0rNw=xf7 z{D>hfE>j{gqT<;rBjZ|^4q48-EaFPHT5i$0ob5Gfr$uunM?v6}_DC0|RtXel!1iPpC2lT=)wXJMTWDqq-lBy6-KLIaoth z$GRV%pPOcqtVF3pAkdcM{oa`y+&Z(8KHF$6fWQ$k=-{sHkXycjE_z z8o%IQ2#6?ga<=rtM6PL-Ao%04P^$<7>%Wt|zCUZvCq0TEY>L;MoUGzMF~ujm8@F~B zzvs6q{z9B4Mr=#u7IhcDs8GCckzR|{k`8ciz)SA$QNtr-$5tOAEUbYJ?C!4Nc2mP- zIxz74L%U_L45mMeS}nTGJnp`Oz&9Z~^!MW0R;B{i2s=By5{}6IA{50egN<7mO>N=D z$r*e&gb!d-ia`^5z@~GnTEM*^bLz5b^~(R+?ouOs979H<9*Oy9+MpF}#jFHGRV@3B zSyQacdn9N#;~$m3WW6cBsY!6zrZ#^3O@9xnSiwszj)OHj8~-hTDK%s-ji~Ukg~H{R zsX?(>0=gQm8sX|HPopEz{u0b>27aK$0-Vdtve*<9!oJ z2JL|tME-CD<0Z^`&1n6}G19$7^UTSfRldW5MYN}1>%TFdY#4Ym;-|PxGP1ez&1~KN zCu-pn@Ti@(`+(-Dk>JJe1Ag;%emsR6{+}}&nr-A|7h^c727tkN95c>CG|JE$FM-uSDqS-maIDsqjZdaQn%RP)CFSn@B1J5wq7_5)}gyUvx z8j}D^TKA(F8i;%o?~MNpO2L|2l>aV`2;XH;&0pC4PQ^tglymr9+$jHbzQ?_v1_Q=C zJlVYeMoUQC{f&yv4Zp)fu&VOSSY$KQiR>&`xxlLlo+0wq)hKlX`O0dCXmu? zUk#y~9y8Ei>4q+Qpji2bbf*-(V^R(~RQ}o%P5yV#Z3`uyZBqWyopSO8Cgo{TK39L+ zCFa|G-OxqzOv+tBiaK8|934fsdu$;FR?=@WQ$bQ-NXt(OHv5A0IUw$(W>a0EG`c97 zOE|T$`Ipd2a}1e8h9W-EHQU0_^?ll&AYQ$DAYB8)+^M1|2U6etD+8KVjJtw7lm4tv zDDFtADM&M8Lg~iJe64>#)P`FuF?0WU+EVa00h{6{P+n2~_Y@nxtGD@I@viksllGS+ z1T)LX&tD8%QfpcgNH&EQvFUE0IqI$^*?r$h??0luVfTh&SCEOoM&LlRZfv%6Wu%Qg zJkeXe#k8>&TzxCLE-eoia3L|n_!j3DHIbr5%MqsKBB(a$jhpePQrKJVyr4Eejx_um zU`TsN#UITzgq*(z#k0=)E>`FjmBs>sk>eAZV5c*ca#oJy`;k-Iw1v{lPVL8LI;cG~ z!ZkuoDCERkBk~y2$^264_r7@HAPn=v-|V2SO>^k5fb<<*kjU1IzvQ6+Ngi_^ z94Vusg_*5c$-3^ieF^!WU&O!oY~WXdVL;ja3&NaJl=H@}oF>yGHYmCPPYVI70Mv9Z z)FH^2djM#02>KZ&BWWxGO=hnxO^%{(G52UIQwB~AuP}`;n((s^23=ThEKw453F#Z; zjk`qjkY=~n|8)rU-#{6;%H13Gmt%oqDP;2(hCuU7{asBZ>{8Iwysm3rf^Qg(NQ6^c zx`q%@`Ha{j@99lN`8hnZACI^T3Dz4Wv_DIj7TxNwPg+-@F_9Xc0lzCswD0U~!->Yb zOGk*#SdD)vkm^mMK8T$nLr$LfOkj=9UqxD%ywBb{#X@FgsMHX2 z?A~?R6{BZ~WW3Z{bL`x>D3uiXOSrp8t@C8JV!@VJOAFLUX0PqeFH4=S{%{bTWm2pX z$Ared9mj=0$X7PIQ10lP;-id|G<#>A_hrzpg4ooVBEt!LItei?V!ErpJ9>}tZahkT zWo1`iy@ymV^2!$+@2ZYDSVsClC;CEQE({rCHeL4nqEU|tX!g#yS6N9g38o&A5)1>h z5#XI>_(v^uI%yb8Jvx_!Kx<(e%-HN%jb9#g^uH146W%diG4yO@&Nf9L#mf%2^gb!w z0dF@%>Yerge)!hI?}@(~d#W9lG94q+s1=4j)iJBZ2Av{qb({OV#juc9QYUa=hiWcB zHsOg$_#O@vJi)TACrt)k*$nJl3ICGuR%w(v;KwQITOl0UbByVTY%;R5rIU-`rn;Zx7Ku~A5m{({zMMz*2{9*b zUSzgvCe)_$97Dq)YA&oV8{iF&cvu9rZ*(F%I@3`h4lSe;54co=fOf4i5;gnrFQXU@ zf#EzK_m{}T2g)-zlMTn=g*ZA{c2^S&lSh_*a$F`!oFULYY#k+tb|%zb~; zb^@`;Y5OIr!8`DGQXa50O`@ozyG}bqGs1qlx8DVfnbz)J%umVe$|ki=lWH&N90rG56=oR0nOFk;vXS@RuepbOy(s;fU2w%HCM?J&io!eF)TcV-j0Z zt3fA+fTyzwUyTc{;bYwMgYoX2;`GiE|IfdZ|2x?=fuF`$rQI}Bzsiic!-?V;u+G4< zoKUCOeJGZDAtR~T{9Bx=k-0&u0j-@OTWj2FQfK|^C|u>vHsuEW(%5L12GmY7gG5FL zCxIEk{8(f%o*ibaA!EpfmCtrBU{QcEDvPO04p%{4hlg2uo4UH`AkOMzSihBdfo6jV z5X!2R;QkZ$GlIO!E6>S3q`{!v7}zso^4PsW+gD=6BQ!M<(o%z$?&UzB{?ZWaX21&T zl3EvM37Ley-MAsf_!w1{^omvK74@vTFRfuA*5h&(23a<1831~_7w>k zr9re7%Uu?0;~zLgXRxfnEb?{Piw5#H3c|!B(;P@#_ierlXe zXkMrqGsyKcadI?p3|3=Yk_jXZ?bLUCA?y|#4xDum9A1!%16Tslr!N84Y{h8b@B{yq z->N^2Pv^J1%R1=pkpJTJ%9*CDfDZAV{J_7%fLWObff8d5yR8Pk4)z`&Vj74$YK%}^ z0scOuBB8p;Ai=m^%hp^MmNe6p6d=%e$a&+z-*|&RI67+k#sGbjLElEWp|Gv>z&Jd& zBSC8y26w>eTAeZSg$)t)CJ6-u=892)Ac&Md$4Vz*diL)2QjQ3Mc`YV~6GCf<-3oKV z$u&E|mk-cX&*(3B@JY(7E15J$UMtlv_!nMSTo|r=(n#-2x<@5Vb_oq%XS&J00oPJ9 zWrnJS-Sr91PYGKQrxg&86k74(W&A<|5@d*)8PAT3^j)oO0i};=&5TeN z;q(H}Uqx-+V+IkZ7Y{H{Dj^`B-KmkDCm}%BDn6AWc4WFi?2a2`!(J1*f zx5*y*t!Ql2F9bjP#ZVT>{{-n%vzU`D=vs>;80b%HX570cDD55zANjB3L-F!JVmVCv zXl7G%MP8%^6^Z=Jt;hbh=M^K(YB>y9HDCJ{JxQx41m(llXG+%?-4Ak;-a~C@lup)b z1;Ac4OzxxZu3Y+0(laU7U$hjzftru4MdiHK)qG?vw)7y8pn9jBTd0EdXJw`!LALB> znGY^1Hykv*zjuRRiBQSk+4_+ju7J zXLkl^TdeB4DmU<)8c6Cd?haC)w5l_e+j)-Fypw`&ypt@s?C*5_mme)Bu`aT38T|sO z8ohY+gTjv1J zb=wo(h{Li|%d&Hjct`Y~?3JFJomDZ}EyYQ2;Bgdt0`~)dBRjP!TR$w}_B*@It2`s? zj7+!HQjVHb=an8;=avFC`pASk`e>D>l4dUxht2<#179|j?-3TKdi}<|8~51mk+xeB8|7(uXXo-yz$k;cE5Us^ zZ=6o00ZeR!UV#9id^9-NVi=K|hFphQjD2biq+FOdf~GdG72efA#QDzWo?V~=tA z{gn`s-=&(b_)L1Nx)=5e@n&wgz?Yi-yWf>b{mN@kCB28c9@rEgOWn=Tnm1|B}bVLvc%Ru*0>PPrI3M zNn9LC(o4)ITof=snolpAPp>&8p15p!KT$?+G)$H)H1lbPQ*!GvKEcwp6Tije`W2t* z+}D#OKNAju`o z;A^7rb&aA`aZZuX{=Iji=ec9ieYhmTyM7k#u2$w^zF8`XtXlcM3_^1AFT z^7bX{%uHpaDsxw#Nr@_@5Riu7^6X!ezV0#DgKHMoomJ?H^E1rf< zI?cbXudd2ay%7$iCZg^JO!>J?S1L7V`)P!5wq!cKvh9|>aeGICQIrvp6AqZ*F#_b=PtSB;I&wVrOpjTaema< z_}{8NY*PL@YybxrOfU-N(O<4e(;z<>s4jahE}=Gscl?**_3n7(JK{G&`GE8{`lb}i z2z(OwIlEBg&IOka*Y`OeZ{dDREAwBFf6jc+JTP|0ADX1m;na{(vSqSK5&{KfKgu>B zqB*Zc_G3-_>$X2OS1;9T>_^yiMDV?)*M-mE&XfHC3+3ZCn2I@*k2Y;p_i?i0%M3TO z7X1gnn03D|d((w7H(_%sN!4)SX6h7pcxo`>da9pQjetJB!o+If8DYr5bKqZn0$c@< z!>)PiT8NGUq9(;}vZ`yB@c%OYU(Ww+{Ex(5yPf~v1NyobNloGA|5yenl)6cA+aBwFO12PwJ5)mW!-*s zfk{v)`CpOHJwFVN?MEu~-8^&u(xXkhDf;UYfgZ?D{@3|L)?lI@dOn5gm8893MiOkc zXFMIp`$2R$p5!-)B4l{jp7d@H=F?`5Qzb{;Zsrp~?Fao}FD@3i&$@dxnd+?j+2Gyi zl-y+I)8mUYpC$%p&$)g}MKH8MRdp>d;MruR%4DABoW>+N(x0X*nna7tm$QS2E#Qp5s%Nh65XXm@Tz9`8%rg4IDGgS6=QC$Ng~Wv52Y?5~|h0)y*R_cjRXcBMNq?+>K^u6R#V2y#@YG3Fgc&zOpZ<`|=8DQz>onzKahkUaK^sZpIh9P3^# zqUOkAWUgYdy$4H?qok=7lNED=UiD`O(U*ul!xbGtz-7K_NcERGBhej_=}Z2}8BsoD zn=|KT1wq(#l;OeTDacK6Z{mCXh$su151{hN4Px#BK_niT?)1*MUhLg~5D{F|_qE_zF|xPO^1YGXGB%mJT- z_v4wJgBE^4@rQD$I|PyN#*`TsxIASHf1%DBGXrUd{dph>Mez<*XZ z!+FOKr$7R~vO3pE`n=JYw>vi_Yqnb%tv-?{|ERo4cgD=lO&ojN_8 zv|?{^=>Xqwa)_GcCQ-Atj&Neh>}eej(FiN{t`*Dc`_V+|X(cI9vu>4^*@PAU#Ma_D zGNAoJTo-dZJcd`rCQiC^4qAKifTBl>nza0N4)S^F+>~&i%$pDl95_ol>BlRVsEsLG z2hjS|X5L<2+<0%nSW9voI0IzzZL%4%SD2XCpg~Gt4hg6^gjINB}cB^D>>6}uQ^}q&BV6TP*LYz&yn6=8f+xl7;dFoviakKS4+NxOGq#G`YJ$c z0Ub#RGmy@^i5+7DIg|;K?wSJT9HCNym1~Q6bnnq@Af;diXLW=uhpkc9bDi27?cjGFW`r@1b;D9&3#E@4(Md9 z7=t=_tw^?sLW?+y)`IuI^K5iF+=1jilez|S=<|rA<95FT&o-SiXnDa9YU;71ca(~5 z{FM$wYIFQag}aF)ZDdx#2()opA)@M~mNtQ3gG)6kRor6w05vJm+ zTKmW2AFuYG`Y*L#*!^eik3&uWto>J?5VpUdpBSPli~=`01W}z8Z#Kj_4kKMmgUFK6 zH5hY+IqZv>%{*v~z7!B5JZ_zy<`nUitBvlrS`-t8MV!rS<#Az(y6)xKa1^sQh${p~ z5&Q|q6hk<5EI7Ts^>;CjBj)gf1BYPhT-!;wiF$sg!k|*85eO+@9WSJaP}u7%Kofk! zuRGPHr7f~8+E_{YyDuV<|LC8`Ev=W!$NX$5=@#2 zYQwb5QZh$sh4+C>w@#A_B!&`d~T z&?!JB+$oTRYe>Q@CcQ?G+Jhus{B1xIXDu?#8}vDn*w#e>=Tm*?;n0HubgA5(bkLh{ z2nwKeBYO_N?YbH_h@vMEK({O{|L+JPcSs7j8Bd=s3Mi)sM*oJz4|B4|Z+nQzm7QBT z6hVfiF+H-+br+x$H1xaGiEQnBEtGFN*jt&!6eWKQ}B-~Cnk&WX%+&eF8QYl3gVdZ+yN1$O7}Kn2*WRwF@o ztxutTkUf5sn%~v(sva#bG)cEYnfm6K`Wgv`jDA(n8N&XlJ*}p`#ue1HBjD%4&)x?= zhoA91YUzS3h+co}n-J`$^PCE)E_;KpJS3j=<^$5mxdUWx z#9FkA-BlgQ<2;=EvQ`{z!D-B*yYJap)JPCWcDL5X)1-3aKr&0)e8EB=*lG=vWA0fR_BraNR z6MZz5D z?U^_tCYs_4@>`7TwKuW__G6smrgPDr?#ouJ6{O#pR;B`o`0!3hCE(0%QxsVY1l$_DvGC4E3+_o>XkZ=_ui>0YE$t;V%`jjec7t^<^yL2SddVgrYRl*w4Wo|2eor*ZOy8Rek*DwLX6!)IY5C*Pnwsbgc_Q zID^?~pz)tqUoY@%y`S{Hfg%xNae@ZvbN&7zph@q?zLOo}hk)PSb0~E0lTV2E;|&0I zmAL&-C2k4;R{^-HP~!SSmH68La2bHh3T<3|s1ln4z*YcT3nkups1m0dz(;4n?XbM- zr%-Owp~|fW9Jr|hhh$rR%`_+OCo?CAzX)%>=?ta`vet8)lZ|K3VRN~b6EQpbXsIDy z63b@IF3kWlY*x#4FeQxM<>&}iTusA3v5vgUOfVByMt-vdWX=elm<^JH1u!k;JC)@wk_8!{`Mm#pV9vf@ z*Is+Cwbx$jE^RBML?nr^Cizm5Tg|>UOK8O52~2I*J#VGQDcuMZ5+&!g>YnAnHciSPV2nYR_phJi1mutu+utgovn8_ z&&2)uPJ)I#ohYV&b&0xmbHK5Zs}ptTr%1v>!TRW{`LoWu^h#l_A|lRpcZ zv(Cj(fJRQzzfy9NQFGoILDP+Pi|~MB?$~(IWS(^~hCt&nH~wA^^FKy&+zC*-6D}yf zCQ-bpb5j?+V9q=LVGhV=>O5>tOrAL^=?L^s0AD8In?`C{-Pd(cRM80Y=K3Q$!u<)) zvGRxbT=ox-o1;_Hlaec$Ts@t;fq)gnM>qgc?F8OP1{C+Ae4_C#Bq6U|4Am4fDVIQ;l^h*M<_`8KQBVQLbIA@VdPqa%uV!`{-OwHC@&JM)}z@U0MyrZ#;vcTe^1(_ zhN3vhYR%CRBDM-pw*b4ZOL%7}3&d)b{0dRql_v)bzj3j3?3G>TT!9!{}(!jX>YJt^i4mXXUP6k^%(v~0LN#1<()&4=UY)5U zw73{GP0DaPPzzUM*2TGKCisattVfH0-J;xB)xmpm!@?4nm|Ej?nOT41^5F72ZSOb^ zg-^#RSuB6EY{QakRdB=I1qD4X{ah4BYKc^?B;2=0Y?o|$b`zlnOyZB+eOK_u)mi{h zLqHw;1BPNlFk7@dzI%(B5L>s+zp5hlBe;=ydby5sxYaa}K4>IijN#Auuv>%iNkTWK zHx+Br;_J32`{u%_o3cH3BG3l?@+w*kG~JXP>$@SG^eJ0&B}6kH*xy835eZ(4t;@#y zt}x)T)0*;HZZ#7Iyg~2iHtD{kFio;7*F@vG@P+B%6U={6?mlFv7C;>EKGAC4!UW~c zB_xi8VADR{CGCi>+m`6N4m_%6tf7`Qmis3X#SlW=s745*nue|wUKNTZ5&uE3?ro;D z*Msh?kFR?-(RYiIfNZC%&q>A${(+DSy8`$ncQ_*N3pk)zP4Cb=Sx9cyeV~J^tZn_N zow@L5*XItQq1qmRnl*74tw_YNIk3;n~##0T=1t zLl)hfD09c-D(EjOWn&Q$y%IGnGm>Tm zaxtXy!}XEyE;5U{R4-$Taz8Vfc|aOc&SoZgX8#P~UH3?I`!oUsyZMA#i^FrjQL=DL z>l)vW5VX#ZZ#Vl?GqRoBJunL5{>#>`{`Qp*z*1GFh{cOcL4dE$>|wE_*1HM?sm+~^ zU;PIXfkpd)GvnS_fDzjY7p5%mq&Gat(b2oF{&-*jJ_=7>CSPRK@-@Fp*~qY1Er$Rf zB#DuP#Ci=OHDPe;z8MVPWEO!=}Y6WT$zmy}ZqDJ#R2f4eZK z{Z^9_+Tz9_<+MV|sxaj}Vaf|l%3fSOdG}2(q^b#1wS=jTHK}^1;-s2UNHsi6H7!il zN@eNJJ}F+1-Z#6D3e;%&djhHKM>wDYzYRP)OE-}OL22xH$J*a2aaz&T;0cN+D(=x2qx9oQro<<_Y#j|T9V|v;L-`L*f9371x_lwkaTwjE~ce1 zaFwRcC#F~GBz}AA5L5a%N6r{;XbXj%C!lcmB>dUMM7LncYjh!Qv=EBorge+EGiZcC zHh`QzDIe!0ZVICMnIhLF{8&DUBCieN-lt(g1N*CPgNfTy_au$5S_Z1}Fj-fV{zRI% z|4XFUOCP6cQJ!t*heZ$C)kAtiC%y8=&0tCHD(;UfN%}vGbal{lqT!;re`YBq-HDWO z6gB=q2O1_O{gZo<_9j>uw!1#x_=ay&ac`1eO9!Iv(_zI8*x$?a>8iNU)~4Yc$Hc#f zB&orYNMtN)BfVHKMgo~4{Pg8M7a!XeF6JfwruX|}yU!U_J1B39nlfRKGcx+qIFLvFL)Cb_7p1N zqN5mLgd(k`?X(-gNULduaj=qqWgMj#nnFM_E&<7-!x|iFaJ-Srf|B2J+>abI6JGEh zPey1)z73IR#PSMFnS1kKC4Rv!We#F{u>P>*-uD0FP z?hCg6BY5@IE9~8C6Orm|jz6FuLb6e;Mff&b*~W-dhdSfxPlBC9caYPhk|1>gza^=| zqyCSeNJ>}ONW!)kPmGkp{I^Rdx}`h)>1Zrj<-Rb{8@V~XyoA_9WF#-3Mt%a?=7E>( zJ~!SQwt{eCW07H>P|q{K}MTfc-I1Gl=v7LQe18^6x0k9+73lcW`%usd9)?lSHdD=sI~#tDIPY0@ zx}(^}yhHO_j9}M&OE-CRt?oY)>G-F0vX)uktnT%wxL9wN^$D!ef4!`Sm}zPfKR^q* z7hkiWU(7G)Kjs(oyl_EZs0EFx#onnehs#yKCHOQT^dYL}0FY=gkoKY$GqFp7v!!_e z`_LZpVYIN+|8L8yMZ1Nb{%4C;OO^h84u?5rJ(lcuJz_T6tYOkZ3wgp31nt+RU;X%vRWaSvLI$Vkq1Y<~_v{ zWivKQ);)I*%eG-_E~W%M0aMzVb`^&O_LwJQekd{F zH&rhnNwyieT#;jMu)8Dj>3E|{SZ&Q`ok-L3;^SWQ1Q)sHEIF>(~I z`v#z#W%Dns<_y6J?>LDAs-UF%_;l7)%v(@@6d&D1i+@3ic>3|##6aeh5`Zu{op7MM zF0`6<5pH`EtE27;+O?Q^A<8dJ`d9bu^jaJ7>cH3X9H|oC*(hyzZbII0jVPtrM%@_N zGjwk`C0@KC&NX=5OV-?5Ool*$kpibDP&tKek>~8)FGh=5dT+4{PZv*6oBTKFhvVD4 z3usi0;I_I1ZEN9qJ+UIgzCC1Q_$?4 z&(&4CXL1#4Z$Zf(vr!m(|CERxvgx48sH2Z19QB!JFaU+B_OOF=%arS-L$X=VtlHr$ zr|e%}3s}@&ruh6K>{^s#%5v8k3_x5s=D~O`KxVg|Q88?)NeooNYtx#u-49R^i2^+& z*TwRy)%|~c!doznNI@U7+@I>>IW-c$_(0)y|BBNA$ zJ6Yq!;0G14TQ03K!8>YNtA%@_buUM)(JP};TR>Fy{Y8NUIj`0foqYoML7<~n;_eB= zf`yuRIbSUfomv2oNaRlT3>p@Qrw0xDDh)%{CsU+Y#DH!t@YiDA(w^h# zz7o^;Io>jjiyreT62=S)U zqhPH_xIPnM%@pONSEM@_ZUCl`zD*8o372Qmb+nQS%QN?mN%5bowcMwq5CYn7CuI5X zQqz;Ddr6@e33`#|hY95FWFW;+LNAM?-qL2)&j{qQu!>SIM!nN20~t#H z?9TM3eP*qM3WOXRM8i>EBPO=K(k04Pborq4XGdNE%^5`a|F+l2{H8kx%0INr=b94jqro@`y(>)x{;7RcKu z=_R-{YK`6LxPMlb^i^fR?a8EqkiKc91jXi~n^iY&j{Dq(?WpG;U_YdR!Gxx?xj3$g zck1TXlWZnR$&3Se=EY|C?1cBbDa0fZnmOL_{ya^EaSXnqCZ1kZW~lF^hmjWUN_e^d zJs|gVD(5AuqMf>34Vz-#T`B-O*TKsiTBJh6*gaax;wvY5skbQqBNgynHs-mE7P*U~ zb(>~wfvbaf)rM z4-<9_;^??~X(6I%bu3>5=K{O#g;{?m^->Kaf9O6efr2F@Rvm;S>plqHwvW#=wd#F0Qdt3us-!sAsY3~RKMcCp1X;~fNF9Gj#p-{eZbFUK?5IfdV#|!ClmdIFR%OQy(YSL# z!y&8VN;!HY93TGkaOwdT@}NLin7I z=TJ!WFmh)s$9-6ta^Eu%%Smm`+d@E4mT*U|nkcFA_7)190iN|DZO411>$%@fxI9~8 z;XFl@fnBs?o?WGTHU6&&ujMn1%BercJGGkmSQ`#2ve@_x)Do$Sz?HUPCldN{n1)N? zUW=Dt`Kz(EN<|oe&}mF|k=Za3TBOS46j)6Uo!s`d z&FE_ttTh7bYV?VBT7dKY1 zKt4p*NDij?mr)ypZe6Y6QpXyzL=LE$&%9GnfYDZSv`QStul`^iZm`okk4&$qLgQBY zlP_DpT8V7}Y~(Z!CrNhITg8lc6bbwTf7BtUJ83jHm&aTkD*!z2z$WuK{ttX&ZtD(O zj2Vkxk|g1_RZu{>O`}BI(lUGrw{?$_xXX%+Z*ishv{mu3nh!4yW;boxSd=;lLM=$w zs9bulMT+2gNb`1gX+618gJS;t#u8e3*Kq+UscUh;h-ozkz*h3a+_o5rWA3s^`UE1V z_g4#`6C_!{S0LlIPA6KI;cnZsApH~*(5kamcF&gJcIecSkkOqxlbb*6eX4^XE;!uT z>Td@tNS2gxZ*q4VE}O3gpe{t1tAlbj_s`I&6qRsMU2N?LhKJH?blyDoBg?UyM z?dwhV1I6-*71`gu7ga!I;NitmeDRl)mG>q)c$4+%V}rD0)73 zIg^R#Ly?EX#!srvG&b$l-8>`iojnNq%o{&VXUozXcc=QMKdrQyUnMgAunr$6E__aN zeN~kdqGRG3A*4B1RTmvBkK_k})mYBN;>nFB8i7nKZcwFte{oJ~g=NbY)i&nr{Kq)~ zEPqH(bh(oLMJXGuXi>-eMfC`p#JzGl!`bGMMyRw=zo@j**D|tbKEnG@DNgsF*|wYV z=6X7G>Bm(Y1&~W6s)UY=x@L%%z>soo9=G-3Bw5WDF=n~>+9=YW^t0wcngB$-B2Q=t z8wF*#8yRxoo9e82XAvDhEMlTu#2`!%OFtqS5;ZHj=g}Xw3`xcvw!)=8$|%bA2mf)C zcJuIpI^hqz7QckE>#^JNJL8rzQqH41$QWq9EoRhmrLR(<*?RMQ!D=2x*+Jh4OZYW{(9aX`j80EC|;GbAafO*$GQHa!DF2RHLyFOfu)= zBJhAU?^{$846@mrcaW0F;nduZ-IMij#bahcn#qy9wd^r%gu7`Cw`M#)BUbZl=2bYz z%s#?GAkCs&D-s;KrenX&WxtLJJh9>qrW~xZkw00MMiDw)oTDx>*hQH+3#$0==fL91 z%(937J*tF1w!qq;{Z*jY%o*XY6eEwwYAt2Jo-doj^YrBbIb;TW->yj)|7J zt8q$K0%A^DSmi}2RAE%5YYN@ z!uzwf1z060_mx~+-3}h%Wq2d?_X%G4^Ko9Csb#3I&7Kjqs*QzMXw}cqt*2I=$-z!nrzr-BH?niva*n#u@G=+(Rcu7^o=ByAPC%k#H2?7W@U!)0E z(`~d;ZA59uRYFA5kf=fGjQMI7B#@;jmoQ-$F<{6Xu{5U%326p#PuI4`cLpDp6RZR| zY)CNmxd=XOBOm?6y#;2}32F^O(1CcvN=`2u#3H;fd*L564-$+!7n(L=7R(HTxC@x9 z7a4PpA@Ncek@Hap$%r&B6h<3OYUp*|@Dp!%)Lv^V-Oc{`52Z-G92rQx1o|Pkq=pfu zSe`OwSKn*!>Fh&dZp6q;RGq`saFc1LSx00wK~7Oo{{5Kyyn}%)^oj5UJ~TYA5h3Iv7#MJ8;8zL)qGTxJqsCqk{Wz9?~JGmh?#2 zt;Jz;52LvnvgYOVKXs7fE)OrOb)O$9finFXPQu_!&P=^5)lMO#eBV*)Haq!lz zHvF|4b&xO=*>~ZOj6zc%gF4;1rV3;Y_OIb-Vgc&ClX5&H#CxgWg$jpL65f=&`C1b0 zJ=K+jdor3902Up#IGsI8W+;D-N-J>L>#`^epN&hZSQk)&^{0D+c3xB6h*vt|L;@$! zOLse8%Dsk947Su#zPT6q(W7^z;dVo9L3&PFbd}7GR5o{x^UIG&RfG*i&L_U1Bk8^} zG7&ptXkGI(L9pmj9Pg(q8=SXW%y6c6GH^|1ifydmhSQkt?9Hssj$g3mVR5$- z{)usG%uDh1cetb&_V4H@t1SY#>4-9EflyS@ zgJ5XEbn__BUAN&K306-4NjZ$80FO&FJ%KxLJCE{!kO%m1rh1=`yV&R$n_r_>jg%$fPP7C{g2(~xE)48#h4LK}J?C^rF&Ce+hxiI> zo?gz3_Di4RL-KZMLabY^WmR;=mstO(+ezYg>$N1$%)>zOyqErZF8a+Iyg^X{=CMcX4NJP2GUzd#z$vDNI6hCduJ!L2w zXmOuP4Ux|GNu#~e{)nxvb|PFyIo!U^eUcQ0*E-^((QfI%Y9*YuG499#Tz#cil-hNl zVw+C8ot{P>Do$eEJ!X`w^fTl&-PYRGsO0EuVE++O`GW0UYVcaJo~+Nv++XTmmC#aI?E}_xipo z`tATKOzQtyFlDFC3A5@P6#xxlUf(-44VO~Zfi1lVi~oIk9`R@?U- zWv4$t?hWf^={o+F-*3YrO={Y&mPv1NRd(ev zHO6Yb%%icm3D@CP(`ia$E}z`Mg`D>bxU815K{PS{_~&O^MGxr! z6?6Z->rTcOHyQd`&0~TDFOh&a&IO8on`m;qxKFPB9FpQ*X|*@0CjCiODrzp%en?;p zv#h!As>B?}Uh-y2WP+KT?xdQGQ(I1RiW(k~)`BWCYgP^8!7NB^ z6UqzF2jU<9*IC`#)jUeQQv=Yoei|iWXB+#{rnt&-;)-$?(ul76cmMd`^~f*zc9VZb zjeiFDpCbR;LH^<83mS=A{}aT1Vf(eRa(DE|4=Bt& z4hb4}d9IVS!+8Ajitgi~%|_)pUVV+tAukT1L6k&28l7>9$_HR@ru0ejcL#)D zQ!B-;=uvEO*i46Uwi)O+1C8?Yu-M9SD5s*_Co~8UDz%zk6f-})2d3^$B5?JxnqLf> z`%sT^mn(~DZj5qIF($|{MiQ1=hH)Co{T+$I^RaD?Re&WeET<$?ehNC@qCP^7?NRnL zI`V}>D^SbDgC;%Q(0v5YQrk_F_TN>2yC`RwCe^FbW^#8QKjkO*?tOya35En~ecKsJ z5?rqY2T@qK08dkMrDDG6ZgBqD#I(xZw?CL8HCtzSB0and6tLBqk*3|4S z>%4#R{Ul#>_8a+P&oafvC^oz1#!{8BkrRk@?RUe$V*MlQ`z5%VM>6L+FQr$M=%R0z z_4TK8*~kCw7`f==uwH7_ytK>ee_;hz#z_Vm6A;BDdwQ2Oh3&MyhE}ZR?8idfSh~x$ z`X`D81Z;_uotjXg!HJ8Xs>jnf>oI@4CG9qTRs+oL5r8;SQr_}hP!A3OBwaKr+ zpoWaozuW*sI5HO&n`(Mg(LYgVnyLXegJsqH9f<*r*BgaVwa$B4BRe%>#tUsBJr-Xu zVxWsMQyaEbK!LeIT!9Gx-Z8WLYUzYq`Gt$DjM2(%B}I4qH>*efC&K(_eV`4ef&hX+ z5Aan*xw)12ZBT^4R}*>*{udb-%v#63XSG~SEUq*UvQcuh!fZ1ZV|BnE(U_fHvTG4B%51Hg*3P=s-2qC-21z^rZVa zT$y@ty^1pR!xWjRAI|Uha`zEKV-8}(4xu6WWoWQMj$C5cVuZDv)E99y`Z1aeL)z0zz#$L!%anA^n$ zs=!@%_#U%Gf&Yt@Wf;l@eR2E9+bw3hv4+4kG2ch4XYh5bAzVb@K+mc~zRTE0)3XPm z#qoLAY%(1#X6p{VQue!tuhnt|#~|+A-n<2sw#UI-eUv#$8ix0yCWY<&uM>|JMSrM- z!+uDK>}(OM4)Kw>@6v(C7GK95xci%TG{y==J&zsayv?au3U4<6?}z;;)9_l=}D zF>H!hrVKATa8vb2+}8Z}D9mck@++AJwa@mxX?u0%8SSk!)E;#iR%|kAqJLRg`hA`k zPJRMr#9xy`U?aT?y}1=m4sqpn-B0#f&A%aKJiXU&a`qZd&R)aG*=smCdkrUNFPxls z`bijbKiS)GS;2Kt!F5i-bxOfCuHZT;S@$9jrPR2(pApfJ+E$%?z|+aot@ms(JIwa7l4a3 z_I^_i5-s;vHxh0&x6*X7!5Y)2ge4I4+CY%qeI4344_ z{)Do;1RsNc&F2&K zDx#78PUK)GvPcv;dg7eowXnFgFs*r`=_1f&BdRIBKmCky2hmc_xjX9p)`(S!WvZnp z&Z1_;<6+uHYu*jy^k;WsTsGjGfwsf?6SRze5FbEDp)Wll@Nm{1WjT&TakW|gY3wBwXk>{z^XRn zR*3NN2DbhRta|`~0<&B*$I5V4y0uF@?dJ1I-_^h-e7W^BUn6b0H)5+1pN>k$hCc<7 ziap59je9xwMwm!l7_nX}Qg=sMjQK^#g+4%J79vXjKDP#Qvmmw7!JS(%n}=EtK;`aY z)9Tj9+#m5LSm(i54emq`k^Z%r&w-oxVDS-wf=Hw!Qfx;I^9Y#@{c#&AxU}8rWuro{ zO-pbmEM21*)| zzpf7}35)N3L)O3D4|!(9y@mLn9bYrz6hRrq?4BxX)GunR^k%Bn%Mp#V<5`jd0jw0A z^jemxH1CGzg%7bfmpulVbxDEX#!Y=IzH`A`KE^MmWOgr6=t2Ikw@$COaDlrFVu&k*mtc`ED&uZ^1% zG%c_vv5_?NalFM6m=GE^EpayiHX3u9rY1UGZ=P%p%|4CpyZnMd7XYKKSg(KG+L;3# ze>6iMgorym?*)ckY<`vVNEI~=y~Vg?#;Z&nbpHza-bh5AU*S)!?sSH1W+Q5PT~ZS< z_l@i9k>v zk5yw=5uo7+x-V|_V0Ir?jhe{);ZS_G_1Lpo+8dR*O$1~xOk%xHvd)Ecuwy}pNp0D!>6ao>)jmB}yt4W$End^3?Yv0mm$Y(?TspHZz{IuzHf8t)ia4SCdpFD$a&q3wBRWjsNknigR z^6(Zlb?*bbrId-q(S(1a+T;)-+-*yOnI{Vc3!@VNv$E$wyQ-@MJ)_seqK0vV~mTtG( zb$4*B95AS#uL-17Z)9mvsHRxkwJMEy80LlDJiGV<8m5qRI~Oe5hF)VvApLO_%4A88 zOt>}gBl72)fy$av0$t3*}MJu8*8v6mD$-B)mtK}VB^h|4ni!p8kPl$R)!j22x z&!Fr>rKOIsy)#R(d1XID@*;PURvl+?M%;dgK}HS8{rmz3Tlth&Ex+ZXVb%JfbVI1v z)@5Iv$kmz(xB4HQy5wR)ep{gn+38m)V7tlJa>mXGm9UN_pk-;6Dqf4{%T z?9PXq&w*pi=lItb>NHv6MEFSVVdB<8Ub1t#px#{CPv+HXaP9V54S9+ocQsY!`Bn5u3!=w5U!Py< ztfeY#g~I2Z3o5#;^V}gEh$Jr-b>EG1>F2w~Y%})5j1dRRLzDhld*kgLC9audSjWhK@ce&}&O^Et z{vFBUX)Fc*8^0x~>HJ1gr}A5xI+5RAsju?eJEe7is-rSeyPgIZ2s#wdIYjUzi4}n7 zP=Kf4$C54a*L3p_!hcJ_KgJtC`Ww3W%kg)mPmF>WLD^Q*&&;7Q*gd<~GR{jJTB<67 z=1e`bOyz5hj`1cRTCTzcVq-{Fp^}9o#(1ei2dJ6L@u+}G6|l;9rXD&-1!ywqP*t*S zMZ<#JKbS{vnGQy_y9+>3cXNlrCJfIjoF*02bw zS~$0kALNnt;n%2gtdc~%v&*^5l`es%>MDRn{P*K+@2Wu(u3Hj4WTC0N!2N8US2~==X_3gN^qfC2R6Vxsmd#Ooz75a!_O*GPQ zs+_GXM&{;x&TDbMZ3mz^;v?SwNf@Y+NS$$XP-Z+3(usS{3@&N)+5=<05@ofB?Yk+Z8;;J;RgK!O^T~+d>?ijJgwS+-pb25$0qI+FEK*{V4vWGk$b?+a( zjFI9Zwlq5G2fUBi#^`ElbN8~u(f2uX09>Oc+4G5di<_!66)gLIXmq{CR{YJ&>oL;h zZbNzyvsl&xp8!U)t>*D$Z{j7a^zt){(;17RoC~#(@P@{`OPKXv3}BkEkM8+Fu@Dx2 z>JKk^V330q;hYvDYl6@ZImsUoLH%Qe@-Adb9xC%?(9OYIb zuIE^z-*zH5PE($`<@FD+S&mz7*R4PX;~xO5Kr=gLo?31--9(K>DbuaS5kV6L4c1*- z)3N2MY)qNgT1iRX(m^WEYt(R|8Q^|C$U?e_z%KPWy(c0GDY009M7ZH?}@C z#0F7l@VH91L3oWgZO)MjnprL_v2y88~i~F zM4Wb7O<$wbsQaNbUJlt{4|!245~kb!xqI2Iuq0mMUs8;m<{xM*WnYcBV9Vb%Ws)Sk z*!t-jPyy0+!8-(F&Y8EAi*+1|Tx@N|(#jCn&$p66(B45A;0LSeapORiX^C+}QdbE{ zoGl!2f>6ZaD&U+7+i3TDxQav+_6miaQ=ypZL#UajhZ%I8Zhnj4>O;7gFj1w7S`$X8 z`qDzwAVsYUqh2LyP$BC7Xn{`MKdqL#)n=M{=^+)WmH)3$bD4siL#k-@wtPo6uaGNo z$Z%Su)F#s;QfwwbX-$@T0-jbj0!?c-;W0TUA2N-we12uzpe$1l;W$cuWqci1kc`k+ zdRwEKIPYAT7lrfH)asO7{EA)o28JLw!9j|~JQ!DkFes=}{_JNX}jw5&< z;q^m9V6o7vQ}_K!tK}z%D+p;!^qbo1s|0$;q3%ui@xeL+PKx>Wen2(4cue@$KZsM} zFXR2mWo5eh#zxsh->Cp0OorFHZK8imn{bb^4i`@FQ^TR(rdG!i2-ZV~Op&e%UzrW#iYVjC{)?m1r`G=Mezf@Z7uhGewg1*Y7FF}O^X z4RyHKIEnoxE;deF$KYb)#B~HNHcnjqaSftfY@DmuIDwB5AKC7MJ1XgBuzBJeK9HIs zrw$sjGbRM$-mr8nb*Bbu(|k1>ezVS zISd!nI-mkb9R(OU)wOZ|X9k{zbEBAov*D#aFzIVXd*vQ|!%PM`-G$@z}MY7EGSs628oqAjGac z;b8Uz+}$??E%@NwnfrQl$Qxo2HZt5%_aD(AFs%YvVFa^FZQbGdS63J7pwj*ho5ep% zV1ZpjVyi_58!^0lPm1UbkMO4gOegxTSHE+xOlX6 z*?=Ph^!uc?iw&c#Ap=lHy3#~dE2>?}VAKYpstZx&iei&7QO^-oUWoed6*x=G&c>hHLl-6Vs z-hWHk2sG_w4+?T#dgL_1^7)l9r!0vhXPEqEr@<8@BQ&1wXbc)T_Z+ijIKuCDn2C-S zZ*uAakg%E#(|H(0iabHvaAI4u4jGr;1hG#nEo>Yg20KY>?p+++-d{mWWxrD*b9;x_ z-a$Hn8i}x%Ipu=C|d->6e)kxro; zTK`Iwxu2R+F992T68C%^OtXn`!SS!zG$|6irDe^$|N>pNW3?w_@I0 zwIS+VuRV?qEL5YD{w>32FpN=ePOzmR%{$Rg99|ZlptJD}!cz@5(#q4R!R*+Ej1

  • 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%0ABIe5Og+RuWk60!LDw|(7O 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%0AHm*8rb;!tVVwrTHAK2oYP)?-lQGK z*0Qr-!VHvU!(Jl4cE*R-dKIRH1Q;9D6|lrPSHS$8D|-J7z=sU8^8r5pqQPze2mr>T z)V!j5EUq&?h=j|e{#xj*w!X3H!rzr29qShUd*@;@T1~GMer(3QjbIE1wd}n5m}|yW z*?l?V{g;8s_DGF@_@Uwz){?tpns_e=&WL0mDKl>*jx=JXAGeK8*qUtyy47y$(Wc7n z{+V!gIkWG@ZhfSGer7jFVg?&~l1l+JYALxnQI;9&6}xhW?WUU1I@W~lyf15nv%Nd> z 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∨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%0APkO4kV6%z1M%-1!EQxSF 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ȑ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⋘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Ν)ioj2BfVQ#{Oanad?E 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%0AD8EL!vuMojkk*1!Hn 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

    hs-3`yzYay)0IfaD*G2A?xe2DkVQvS^}X7Q0oA zIU25i5PZi&SFCq|$s#&6UQjIP9tDp4hX5P4;nfjb6Hz&f0Y(cYu5T{eYX`|#KLhA5 z2!0Y(bqbvhYH!Ot=s3r$9rxe( zMKJ_T)cHrkq0Sapui!l&9goex;Lrngu<7kAI<4E*>N05Bp#E%*%Q#vXQar^NTqnh# zaTv>pE)JZknl#~{tf%wP5%&wA5p-{m0NktcFmLtr5JXWTM`lF^C|%kV^n`CbgddK0 z_-4sJW>S}+0yJw{05bA&CB*H)JO%1=>7f3FQP^3B@+mIOevx=eC1=8V!|7hu`DV#K zVZCR&!Qq@;9}R~q8(hPIzcapokZi-@QJAT=;Xnd?FcwfNU2TP|dZms-u;x-pC*oH! zwn8i-nhM1AyC_`NNFq$aQ~<(QOChpVjSAbW5xL>7XG4MfIbM78AkL!I5L+qrD+xOR zICjrWV5L3cP_WGe*5|yx(~kSFJF5iLX4?G+es7{BS5X~O`vZJnXjPk{8t6(AEt~fe z2Au(K_JDGhvu#rrIizwa5IdL`wv|J-)kR+X%htepIvFv`*HK6=IZNKf+F^N=$J%j~ zndZ*Sbuf1tA3&C9b0-qi*3Nr?{tJTdG!lrib|i~7cKQL!-UyP*TE(nU#!e)tZJjB0 z9^2L-b7MlQ<+EY9=oSgPouKI(T{F#P9IbGe|Bw@#G3neF6*bJivb+&nMN(1@+>wr& z_6~fEi?OoshLzpM$a>{p#h7$iio+4X)&}HkZLe7uR{qsY$;u}>KbNS`!4!D;Dl?s= z8{632)+91YU61)cg6{&BTcbE)cTi}3UkVhfZ8X-;U0gN0gG&}-E&`gX98}j571z_a zY$9LdQ2upE;}qZj4kTs-*ckX4xGl&_N^IRk{FhqWY;jRA`de(SuvoS6MJS3TQd#=1nW_V`LEjo#Zoz(%K6)<1{o(IeesW2o00B{ z$`w!^`?hJ+Kp(K!ayyFj7BKL0gTA|2K8^vT6(~9#H2HNzv#p!*iGKb90KX)V6hs4^*gcTe$Ugw+BOB0qj+|>~v+@>K z3Lptz_#1Et2ti27%-BGl+C5!fMMWRC8lVkP;9lxyb&o?@z$Jjb#=#&hK(o%}y+joV z*2}r^^Lqfk>j1y(mRo=IDSqu6U|oQrO-kh==<*YTEBhm8bbErX{5N)kLB5D!XGN{Bi@P1j?za)@nqk-A&iR%9w(d~!+ca+GU`Q{@W3zg*@2eAFrY&GjVzKV=r0 zv9tw5q+9!v-I|qg1R{of#2hKwl(4_KX~rjM@z%x2bp?X&4Jz*v$)A}hzgAi68RUP} zhOz$a0**)oXj-e4)(R#OgqlT`HMr(8w;S+?p}iQ;M?_=zD;te)q0z{fL1N}CC@xT- z&041e{6YuCXJlUku1Q2++Pbw1FwZ$~U%PNeB!UxyhH=#fs{uh5om9O%HzYzq(gwo< zKvy~#NZ*U$_(T}chs938BWC@}x)=zrcaUzUT8StpZ__PA`EQSlSX*ho2jsgpwC;3d zJ19+m4XlgC>8&JG!T%%gdu_xX6oM-d?cdsO79L}Pr5XfwIpEefuu>J`oZ0_=TxJtF zUXBDcD?5PddIueapoVa}-2YWvboORBv^s*BEdW1ufJLXNkp{#5dV{!2VQdTu>PA_4 z?O6Im(83Xp#1pi?FfKl4HD&~x)CK@RkQhZR`L$LsE0MJGcpz%=b7sv6j9DBSE3)8;@=xttb zA$)Os!j5NQ0sR1Ae{(@)71IB+_>lJcqqLaOoj4SNV3dK&0RC&@!@0BnO-f)71KiOL zthm$lo3kKYwB7N?tE}w+xQswlA{mL4hJ1`vW7>%WDNX)a0KOdsZ0ROXXS@Cn;$n#7 zNOzx2Z~}*56q$~6{r^Z%XpfUzDRepDRuR@TRq-?H|0X_kv=7TBJjgGEj{mbGOK)ZpJ5y`Y zPg_Gu3BCnX%9f}Sh?7@;V_ce!|5hP81Aqq+Sa)@FJnOgpn0Jwx11MBm0MubqRoXeL z|M<8RZNIBR@H)WU><~0?r^hd(4JZWP0ni5y!Bk$~_Fod8p1GOLwJvMltuO)*OaTRK zM*?yNZYJSY0H&I7qWHOnO4Vb~Ory?{!4 zI_@OI#hPSqp;b%^>nzZ{+Mz8f?&`BwV#Z5K+T{2)jeHl{NXs~MhNS)m%wId$iCASp zQc)igP-#cRM=8tCT|PO$!*jlpK;|PIg*ECe!9gIUpoGmUhVM+E+(ERCRi!`Z%9|1 zRyat&&lRTeKx2$W?S6@{=ly4na?)%07M+OmPY7BdR9r*j+C4#o-^?UV-z^~VKol8E zXw_G)!07U?_(GviB-v>;?w+|^fiW!p-8vjAQ2YF!QU@UD!pMS7%UYC3Q%TjXIJ@?M zyF~>z_|#TVI4zn=?lMqeWotXy?H0Q~JLGJu*@ttwE}~-78yjx^-1ze0rbkzTNgO_4 zyi%!SuNI%6#j8g3WFOId<^IL$*-)OP@WEdt@xLTUz<*cTGp#`aM(Z%(%ra z;1{vu(A@2kqcwZ)jrtDzDRy}foD&yXjocFZ4zX)lAJa4arMqvc&wx#sr_xT3-+8io zZ;t{lv$vX)YqZ>n4k_P&lW+|OK{lcJqBo)4MyxlX*{Rx_5Fy<6OXhqC_3h)h<_3X3S-7<&lNL8?yyo`xL@eF{(}p5_$bom?Z1e+uv!B-y6`1*C^lfO0sZVkx%A z4mee*LImHP`(ujxA=l!Gtfw=8_5qAqfUdW}dp-gf3EC@gBw}3&$m|Z$s zQ|^@gt3G~;Z`E?IcmE@%OJul09_!oW(RdmjW9&n*&M|M#Q8{bxJDwovV=<=h{p%vk z8*>i8zrF9`#Q`~2u=m|uq{vyq4ENOFXWCQvDTj1$(61}*zV!kHYqhGV*Mtj(Q4KK)JzO(Dh7FD-Qya9KlYSK=jIcf@fzSiRYpdIrwF zAow1mjx72RDqk=9bBW5;piy9G}>?$J%XszC$L)BZ+b%D=4PAdMaQu2{YYJ}BEbny|mi`c=QmkLGT2uKUqkg3cN#i?CTeO^30B|jV zsYwQSErAb7OuD(zCVeI#FYZD*n{{hG>J>+yn#*j`PXX|iE~NRTw0^4+lg3i`7OheJ z&|3CJ@RZu^R5DnX#W>hkkA)DrM39ri=o#!@Yr+KY3wncnJJV}{ZR+hy;f`Zd`fsV< z#qD8f{kYy4#%CYvJSXKGi_hBkX#eF7V2%GpYD`RT$*aDF1)&Zzth4ud;8Q^9e)3_r zpWMac?z*3RB>O|t5iw2`<7xr#UXY_X;?rVk4$oto?k=%g2M|lIv2NY2)aD(_F`|aG zd4!WHE<&7Vo*v{8ZOjXb5~B(_Oz`kBj$T$Q#Q|X0dUS5ezRWR$EE%xnpLC1e$#OCb zXNvKCu&Cu<;}@WWVnpYQF=zTYwg9~Y4c)hzfo8BRK*mK2P)lw%sEgGKdk)5 zd1@;WVHQ@`HANS(uBpDGp)I6`Mof8P#?5NjUKH!y;KVIG zJ0&Gf2F!_^~?+`J8HANAe$(P|~?d)9>z$V{|Q zcM(H=(KhG38HZY34IE~*wr|}d0@?dH5eRPi#Ngk#cOE;RCVwQht74!aM?!>T&fHWrRoO6B?idO7r7L1AjQmsa z`taQuU%Kg_q1>@+eDOw`JHcDe*S^pQrMdA+anCKVK(|2nW{CodZhmUaWpSIBTCWLs ztfH*@C|lWirHz7acUHJXoWM0Ul&y)hV`l}Vuv%Jni2S7I8IHGLpfM8a=xl2WhngBU zgxNRKP|ioJ%nzIkM2)pg;WF%f&>|?dQ}reW=}1yAI71u<1~&x*bmxFm2Qxxdi$dxn z6hx|5n!`E?8vj!;>!&U z7k#ufX3s2Ka-I&PJIiu9cCO-Dmal`PYguZOge7!M5-G3qPk|xqE*oPqdch^zF*n^D z(dOpF9nc1QZOJh=-P|60C|E~5oEOSPC^w!PFa2J_Ary!d{iF*DLNR-9Fm!uZzsJl7 zog;<<7Vvp5cWIBo+~yjw^bIU_^k^WJ+1P-K=h~GEMuzycVhWOAARC-7LMw#*+!KD5 z5VHaq-E@zR$z4IH65YA5f87EyvVLY1nJ-pGAtdsF0h*1%L-rGY@5U=|%TTNo8{t4xhuFGLRu1ZHKSN~_aYPYT4qA}=r)bgw1Dv8@x zrI}JjH5`e9Nf*qwMc%x8e&=N5FWZ( ze6F^(!RPS-DZ{_ju01W|qSGfXI#UKs<@u(RLDRToh^>>B&gO7?W1ZQR!NxSEbK&+m zVoO@%W*&77mWB_3P{+;w14xcM16}pFgXHJ0foI&o^ng6_1q?*v<})^}9&<)n^iCPQ zOZ!WD>5_LraP%K`%HxmE$>W{R%CBbapq((oF^=i!jOi2q77u>Q%5z~WU z#iBbY`3I*$ztX;iZqvSnZr8qr?$Ex4?xb&_*y1%bwbpbrwyc{YKd=Zmu73V6P=LEJ ztsS?{E!HtotQy8{kl45Qv&kvpD3rQ8^!2TsFxLeCmA%2gPY?LT@b?f&yS5jFNHs*X zaoi!x23@DL_PR5T8Y{DaK6X+v3+VR<4|*)ZgMNmBCmjxnh%4;O+0Wp2MkQF1t-H*F z=zb`No|rP{{E0t#SuS%feG17sYv%lKP+2)2uRv_czwvX+T&Py&QBj(J^IOJ>*Nob3 zneuTICFJ!pgfDZ+WiN5}{Rx=Retfnrhhk>dB!?3=j6K7Eb&az_uzu%W2UHnY5SD*x z?o_f{pA^0V^4Qki+E%j;t0meU5*Fgk;Uw*Ldu}V*P$sWfW9a?XaRRutnnA3+6K|Vj;GoR zqX?EQY&3ouw%(xB@d&;V096`vWfGuTpRIcU`iKo~jTIbKsO3R)_1P_XeMRtFz^2@2 z$eSyI*F%d3(dXaNZV}8BAEgo8RfKEeA;4n=fvAGWaw&$Xh*DDo8TkPD8k!&!1Ot>QO;I63DD`A8c%O(gF1Rb8Ra8IJgHfQ zP?J&wjZugYt(wB?QG-tGvB=(=Qo_$qf$Vf5r1(5qo53FT$i&XV?Bg|N=-=aR!f+v4PB|>+= z4^7v!!}&MkSQdiNw$cs&1NtDtFf!n6NPD*Aau}i*g|>Eq`jg~ffDo6%5F>wB;&PxO zNa6?Ig5e&)5SN1yIX|fAD(W5FfY2-9n9q%kTaM+dNz7BdoX`fUd&+rJYSL@ z%wfj$Z8SgcPBCOzmD&$Mh+ChKgWVX;`@n*X=V>UmbsorH zLKeOd>dBAieV{G_`rf3TwG$`S5DfLC2lT!W=j`%dD6DlB2%k^lQuWD?=zSyJsE$VS zwff(M*&l+g`rRDT`@n&W=~DbNLH#_NgWVX@`$pUpKjUuPnMUvyKlwqu4=l*2E}DNP z$X`qrsQK2nsFd9p)%(DK4C_(@nfJi;1A-QU<{_rxgfuTEO>;F^tj#! z4rE{#A?))TrA8xog^>Kf-WL{l5?F+A5y)Rf7F;3h&dA;e9_*o=UB5L7!{q@8x-*oa zouj5_XeYO^E6eu6xqB|dUP8YL*vu08f1kupy@W156EC52otsp;Tbp$@bIsx`J%VC6 zmX2oeppRHQ=-V|&XUF#9Y%1b2J_S!^ah5J$%`$8mb}!8`Y&m`=y9|q?Oo>-vxvv|! z4}GmT7)^E+mMG&b!tNp_=M+@Zi?Bc!yJo6)Wg|R1V=q%Cxds~-UGJA*iEdApO6(9z^4A=01Hg3$V7oTx|DS#egiep{*@~B8l}^+mG&Mfc~Ei zz8lN0k)XT!8c`Ra2-Ys3d5);IQ5v_hR7owqdQrh)+SSCB`CE*C2pZSDf-8xo*NDf- zwXD1fV}}FL1|p+?t<#A=>6O<=v~y~DskCkauKOH(LV`$>TXzMEj(h4&N|^Z`xGX4~ z6jqI=$LK+4Mz2uenY466_vm(jYoa`= zp;^`)x=X435d^8VgP3UJPJ&PM9J6PL`=X&lTle-d_|1=g2r%)2pv zijUN=JN8lBBSO%cpr?h&&x_)qmidlo!m&Vm3QS6s z%*oGV;-TjJ&U_*cZhM}GRVc!n5{4O7*zBc;O_RvJLS1XDQAi!KNBPWIdZB7`-|z*T)`w7 zqU2!huIQ!i=Ek_EYH>C@ggHsqZ!Y0LGtbh--iyHyfb)S1Ldv!-(ECk=B#l~Kc_)P6CC_f-bvJt1AE#7VwLDEZBC zf1xwMm*x!ZDucK6C#0qc6?R+rEoc}qAzlA=A~HC~oRF0&5&A3_B5!|SKqfW*5$mmIQI!6h?TAOM_Yjdjs%<6a z8IM`t;3cd7X50g=Ywbj3jDK9BhAExl0X-)6Z>qzM+WIig2?6JWRuOnj)san2JULX? zrpEtPqSG0@9(N5${UPh$z(0^tjrD5$!`7hZa9T|O&Fw5T{t0UoBA4Wm1n(fI@lOiT zbStm9HdNQyj+2;M)cB_)a-fBLtu32ay-n~tV{`qqE{L6qZo!lIj4qO$*o-S0F66V4 zm}3&v_~)!=f2Y($D^F@B-;?uql5@J9qQ*aOy@agAR$iOrRpVcUs)>w`LG}jshxY61R67;7J#s845f0Je^ zzgSl+)q%$ps1I4=Z?=v>eky@hqg$+hK~+_M2kot*FX?KpkOmKR7})W@vZeyGxT9v> zveHo5LggQSr}Z3>ZC(aHshy$#zqY8Xh$^Mdv~N}8cS?+pG4dBOsY~Bf`v?(C@Ect2ADEkQe46_7+IXz z)*8Weeth4GU8tH+#Mt?nEnytXb7N;Rc8M_A&|XuAyP4}6J0faAF-2OD85K8+aVv4M ztuBHCbm6)%=89^c@AT%5gVO(E~8fw2Uvxe zBj9%)<5n}P8+S0{4n?K1uKelL7=QX^`F{ldhe9E{4bW*T(*BI<8xv}5t?g`3({m^B z+oYND{p;MxEI3~3P@}n1s3iF6j=1;8oyw%F%uqv9%{rAkjcLR1)`;FGH;->40R|l- z(%b_Xkps}q2DqJ8xzqVRE;H28+}6-i(+m))?}=*AqOxT{m0S27SQ>$0qq!{8%Lm07HAl694Fv%ei zYb9bNBN`+17}9bNlb9Tp@iG|QtGN~ziP5Da;Z#Y;I2Jso*LJjS2Fqup(Vxyuh|wcM zdILUq!-SL+COpan{)2>AfjT*&atEex*!hIX{2{Len#Y zvHo-sD`2!>&k~@0UP4w8P!~ubkI+M$%Dr4lIgJ_l4~Wi&RGBWAAgZ$k)lm*A`Q>GT zxYLc)GlcgOnb{+CNtCknm-HQWx>^yjhod z1=Bgq-b8zj?hP9{6ua8oSF&qpVxZ>~etG}o%!?NT#eFq!?9mbhpJ@&E;@ zcX%2(-0KxDtMGb()aEvoJ3=b|K&Co8>eSYzCY4(($t&U{x1sYGDX5#`ppLXbZAS@n zXT$67mR}*vTq}&(g;RN?pJJVlF%Y0%n>%eb?^uZA~Shd&aqOE zk-ztr)AHnDarPHH^O?u3R40!}9F5@|;bQ}HiOA)bux?r;$&+i5!34>@J&LXxjnt0T zdX@XfR9=6$#YyEal$+Fb9&{q_r}7HMi_v+AzoT`7%AF`Yf67#cXQAE!Ya{oQ)c2vL zd%tRzS|~{`rV(@^&!?%hkBSoH+0xM7ta6K_6o)a7L&cF^M=KQZT#;`(bFl4!h30Ux zXxK%Pa*>1ITRY4{$zLp`xHm3-gOY#Ly zGP#mu*vKk3S5ohAQVlR=L(&&YGH*EP7U~vB*I^U%=x?dK;qsM}NA$=fql$N=aq2ky zbsI&j8X(gZX%`{Wyf~SDX2B$F;=FQVOJ`FPrlXT&URsPHebNCt0VT6ic^${q08U!- zi-C2yUt(&oqa= zCo<3GLdR*^2RgiXW2f63=}65-zQdO{w!r32M{1r59Ui^0GPMv+8*D~ryNo(<2RVE) zO0zk~Wz&tE>u||9&7_Q$B0RWgwIdI9cx0SralXr<8(Ct@k{d^m<3cBsi3l>o1YZ`7 zUEyp(s{9t>8N7HhIDJ6{|5xL`-~87x#~|kCR=PhuyP8SuYnYAy50;q0CjLK&@u#P( z<^St}@Jee?1MGjWGkHDP$+!`bRcP2|tzkk1d)&7Xsm(o_9qKAer*amrCamO~Z5rnT z-yz$NX*}bKik>}BsrVFeCPt>uQ&yUoHj}z0!=Btusp47)qSiIF*6OR{ zP578|O-E-$O{snrw2)?|y^t2nk$N>{m5DcAcpdbsx$=ViZakJ%^julfKa?|VX5btl zg1wZN*a=_&8Y;Ww~H|AS6G=|mG&^-E2qCw7j@mBXHK1Nmu5;y;NRorAu|;ARb&YMVIi?l4m&U|5wlKaz;&Zd|?(@xTG7{%y(*C+S z@AI)mss2)*`UR^sc18gG73_@&)il>OZQxw?z!~H;9TT@Lm?Y$#E-kJS_^fB3GE8V~ zP_*o{FvqN04>v@jua7Z>yXg9#7*+C* z38=Sc@Hm$0@J>`ll@3Kzc{?m>?{`dM9{Hy@*+NySyeq_7+vgo5Xih02m3O^G-93=e z0%ZUv6D$=VR^q26c@zFQob>Q55cRv zi>qH zGnKr52*FF7EZPPV{Zn}l_^7EnnMf_w*Pf|Mn1kd!DVqD7OIH^QDUV9Z=XQ!T$>?$+ z(__AifReYbUD4=FT6)mpr!1P-yqWE0v84y$zGBh3s)|l7uY(QJ&K_#=0^c!AlLdtI zhPtL!xQU%yDz@ZLJPBbmn8}Ao^kv@Y_I5Pi$x9{SPESHZQ)gton!HRBp7kU^rR&t> ziugIW5Ryh22{-l4%{%*7kH*`OvL>0`6q&eSe?ZD_QIHI<`;%AHYE%)Grp&wwY7 z6-qC~P>O`Z8`R_)DeIR`sx)Gj2E4#<5P9fn|2}`R<-uQ&$K4{2jxcm=a;=Ym`F0lR zHX!5ef_;e-%_SPzLu&Fll2YCV1z_!6;#BMyB$)Ke<9FU+9^zs z<-*C=O2UJ7f<{>09>yjQ#CntOWu}M>M;r0%D@6WoLma5eQEVGp<9}EB4;+&@cO`VvH|0VgzWXDkeqohi&q-zZ3a!r( zl^LnQw{F6+BcyyY?ne%lN%OiT++-q)iqL4&O~y)?D#|yLQ3KVs&?cB^c~#g>s$T?E ztVFj2Q!9uoP0DH{VH{g4h&1HS=#oW$v6mje=ln&f#R$F{09j3h>;Z6-vNi%>vkjz< z+13TS^36*?SKnKwD6E};f5^rm4MSB+Z|Pf}064(pAiP0^^7G4Du+&=BfquA|G1Ef< zN;N3X2`pchPe=@dFef7DvgNUW0T%Fh=~R73B%;G)e3lA$QUuS@z_G!>BUN;QB}0IZ z{vF~87@sPwsh1CPGdnP)3a0BEEW>laji6E)Od7Nb6aJ!rn*QNMPeOgrQa7p8+)Mrr z1v(5n^lMV5G1qx`zt$>Sjv*_x-Fo9=>`L8*)YOiBfKFkH3!0VMc`b6LSDw8L37be~ z7^gQin2KS`E_E}B=2SMWKJPm-H04isGfU;337#%S@Ld(Ol&;q6h2h=7B!>cDvau+2ILnTctQ9&kBL2j`0_b*fK?g`Bd$rwi| zwI=QWUWI4hsXcfO)m`}eZT`|lwsV<65J z-E1kW;cVIa zkKZOga0E-1hpN`DD0P5tV&2$v6}W8?BomtuS{7WP0(Ua;M5|vajh4W!f>~OEK^%d> z=L>N11>@54Fiw5cSM&2IlRtwtn=C7;E6Xd^hDys9qCBDH!RjUD3qutpmDOd{C}(hC zsIsgyxSQDv&|pl>Bw``(^bQns+B*=@Vc-VqtKG5;JA^}P;Kg!e-Y_iiY9MhDLlrgc z9r6i^aD8QC9SlD>Xluc76!kd<@V1(EoTq>@$%qQP&XqJQG1hDj)$+Vb;4Ma^XWE~u z=0TL!b`FMtcPZJdZc3GqYT$#Dz;gzPZ^#OK9LP^t(5@)dd1Tly@Ha95yVWjC;2%s) zhcP@0&&1M>K^pjc9sq1{CsqBS^2&w5O08;Nc=Rxs95l441d3&2_;R-~6i^|(D8AZl z6rswJLv;bZ-hJ3$RcT2@&}BjezTIska9|jNDJx)Em*K~B zsIRTtA^0E+tANkC1of##@gph$WwC9mQT!BjAjR4Y5G>9nMjlADs*tCj$q~0ctJk9J z(#`lSGCa$4GXt#rVhvZ-S&JiH&0*0Tr84PR=!}BY;v@ z(>RO2Ijuc|gAHH0;&z|{bg#s5`2^=|S>j zsdrd^>|r!_wy8kA#jGPol~8d4!o+knjfMLh@v^BBBh-+l5h$`wL7wL6R^Xr*EeNqX zc7APhF(;afgAErOn{WcKHQdl3hX5NR_+pR>ERe*J*lB>&8-D~r;TU66cvHAZ1%k4E zk<;G+RDmTH$&7PKv{c@Iaf>BIS|LT6Xz4ONhMZESF)`95zkv!X6FF=}vDFJnp_R)j zFgykqEecgs220Ci_?PBTDa|1fNY#?EMb*09R7u9>`Bq?!l^=+%HTA+bFy1Xl@-XY? z_&FUtyjHrv;TH97dV^GJ;0TM=GQFv-P6dv%Se)tD-qFewILcawMAHeZwb%xYc7?1% zfi*pEGj?&q^=6zqTI5`eQ@vf73Dj6~kiBb}4hvS6qx)N^i*roea=YEchPdg6mQ+>4 zoLEo>gAY^}Yg|on^G5X-p#^KJgQ1dTWs7N!EH9~Assb&E!R&q{9$0H)FzH|7!L%iY zp?1V!Zlgfh-Q;mjCs3-_oJ!>WbTdp6_1Awnonh&ck`*h0%R(hpRVe6k46UKE6$^tE zLHzUdnQ^i$3qsGT$`%Hlo-S@xi+Cn(fD#+KWwul48iq7WRaJvi_*L~-RK#vtGRxMuuQ$bX~8`Dj;s*>du%Yq>d z3ER_Xbyre>?bdWqGn{uxwfVkCj|US2ms|NWJuENL3x9WikI^_iaGRBnAJb*jqd#Dj zMg?xSeu2*OSJnmP=xXk;IK5E)Yq4R^eNc?lJEYaAQO|R5{<*xQj@qycFIUS;dVjMj zY22KOiUh8;s3ikOOfqwF8sOpX0idLZ8JlER!kk7ch*l$gBw^M#O+om6G$Dj^V-*yZ);-Do zSifTQ9XhWFo#yHN18-RQ-X^NX{Rbr0YpoBwX;JZ2|A?{lI9IZmV`5%|<|y#C zMW!b9SJOD61&}7gZNDhaRNxQRYsi+tbh~r-*fAk6N3G$Rd+8ZE{_8Y(%pOV>mQlf4YhI_tzK0bRQ|ZBtI+E&D#Lh(50;wVEJ`+k z6yI`4&{VBA$?nJc`^2s-4h;4cntDYN7W3`Q_=pl;Wvk?5bejEf&_Cqqt+ISFbaMxU2c~Ds@>JRD_pC<<=nj#5$3q>Tkc-`|w5sL=w)hI|nRK+OMiEtCf%E>G!Y%c!xH@STk+=F-9xc{7T}}x0 zM^dt^{%*{VeS{tc(K3G$MO1-feWxI6a)rZm#Wo>~GHug^%L<(2D>N&DUD|nRXSiy8 zIE-(kwbX~VsN4IYbaul#S+_?$4LHNc&ca#y>mE(uEMGk^C1Be&WMn?NCgg25+q={L zE^uaEC++Q=-GGapNt~-iG%;{Vk0PqZP1FslFvBCFOT8l6p+(fcF~X_R&wb39ahoOU zs8>rXOSQ%fyWPSi)lj&(Z9V+0LrtzVDWiu;v&3;KtimGx2EjJGzY}qjuM`M#)HL2U zjaUb_2>? zCAxDrps?^33NEi$Qc?x8TQum`y8#`oK|6N?l1&t=FxUYzWbYE-+$#eQ`0P!#1Wikw zHvo#)9IkJy31PUeX=+{PEEGKGVFArjLVF`1 zdSt0+tn27RXCSlF#d}%yD<-58gC;P9n`M?(Vemhh}n>HTrLtFFDVjXQAvpSLf8kE%M`KX+y_nLr?csO%63 z7!U}VkOjiNL*ZO~+_uOqJ3B;M`{C;Qdz2~0uKJR(Yd)9l-dsN|IFUO&<#?x5a-hg=-F9!j` zF+12;-+&?CaCsh$IM^Si3P;IfHhR)ctz2d?R-Pvg;LIMr=C#x_P>y&`)}KI+6#DrG zmkS2r-W$MfFRfNgtt)+msosN3+*rX^ms{Vb5yu{8OzTV3rTC)1zPy4HiEQHR$kY20 zc~kjPYfO{Zm+;HW-W){9y{~Yg*Z%AsQzTT!;f89uzHpUy zE^hLp@)CV3tkx}D?d4n{mQLttox(L<&g|q@xn^Pt*Lu&OUlb$dP`ix03oE?WW1yPf zDdS;$tCj(=DqQFNH->omH61XC!=aceT<^UNovHjbvv?I&dRfBqJIuruZtya_W|3Ru z<-9hgeWIZze3Dg#M|;`X^XcJrxtEi!0WF)2-tQt_X3wQU6>j#Piq~mOcrQhQon?G= z)%~w62g_5ZTmG$s1#{>2Rtab=IxG5dLCkP`sa{1~NrNrwp<(fTrKM=I6y&&$M==2pja!1ufJ9xdy$Bq%&`JhI`quR8h*>NzIdAb1S_ymlwk4wAS(nu zzG7U(Z&O&PXV3G;k>Tpavi0lHX|QJc;{tHf$_!!6_Q!=-v>59kIoTiEkXUT2E?d18 z^B{{>Sq;2NEv`>v1>d-)d<|Cb;fwhe&`h%yhv|VzOvV&_KI90)S_{_wz1g%B{hOZ> zEFF`QWl|}J-4|wY2TVUoD^xVz{n@wZNF#QXWJX($agUCs-W}eXYDn&&BfMcFzqG8` zP`+lPvkoy%e(tcbdDe@bxFd-0l_$2Cb?3Bbwvh{FdlG|_9!m@hW5iI_vluunXNuuh zBYG2qD32+IwOFasvxc}sXg5Hzw4t3Dvy8|9N`7REN>W%4OvZv%bp{(S$#3Vmz z#D0J?Rcn=WgiHavKdLtYm{sl}MGzbAphAcZdT24ka9VV#F%8W2BnWpnOB83vh~fex z_WObKGD!fbk6aM^xG?={g2l$oRA6SkL^8P?I*5UaBm!VVU z4{$R?8m;2O)&_1f0)MOF|CjR5^F%TN|C0ZbdfxNgj|_>FA>sW2TBc8<;rfig&wfa{ z{7>Tv27U>hcD~$pA$r;s60EI}J0`c_KO;cz47v9Q<}%1568iLJ+&(LzcS~r#^9Q(5 zE$wabZfIe|zrq7dokN0rnIZoGhEJL&+kp3n@b(9|83f-*AOu>Cg>eBIUMaqZ8}kE= zQOnq1j;!CTKs;?!?GKn1SCuqwAW>BDy|nk#X1^bYJ5_1Fy^qi5^DVbk$P12Fi|;3$ z8*G1XN$%`lV;fk>OxkepmK4$|L!gSb1x^zNUS-fs!do(n)+f9r zvuSO@TT)8v65f)zm)^w7d|HF>mMo;%2XDy|ntAY+ETusQZ%G;LHh4>x(Kds(WI2s6 zcuQ71Czq8pvEVIPMS}|7lGP*rhnF?;y8>z!-$Xi%CEIvNlLFHY-wtPY>*$Di<|j`dF13^x6Nw|@wAq%HJ}Kml0t2YBQ{8g0dA$UA@F(sQYw zQ_iO%vq<^_br&GW^9bS(jJ^c7KatS%#r|UeR? zdFF41`1k|5I^bTkv@tn^=04I4DH<68?iLkuBiwp615{SxN*m6d?bWac+YURk)a6q6 z`UBjEnZ~Wc8G%PYZX-5i;cVX$>}CqrN3c4^S|40qy{bCDtgJ|urI)GF73vUygHGV3 z=tvq5alf5&=5PT{i^qrNFm@G$P$ID(2E%7yh9l*TWkoO`)Ywv{CZja$!msP$uNb+i zt4z&AclUn6Z7lKNm@fFB~dnEHI$SlozB#xWjW!WXNq&PaERuBh&@gnIxdUM&VkZE4GObvZe zsq8pu_8zsyMm`qtPRokyhQ^q`ZRXY3KmAC54>(NBD9y6<6SPdplHu6Bsv!_*+p1Q|G!ey`x`W8U#69-1X2voaDzuH1j zOUf?9hF1i!enaet^i9phGJw5E>@QGHKn^PFF&9Xs9kv6>(NY^^_Z!$ zR$gZDg9AovlpBE(mz31EeXP8MHKQ84{_j2=|FA=1NBS2dO@+`|U8Z~qnNj3NFn=>@ z=!dvRFng`1z!A*dj9N2uRn{XeW>9^|&)B~a`zs^|i657PKQK(DbULj^Go3%M^hRZs zU5;JxpK6vJJ$VA8dt*5o!?O8gvfOU6T(kkH%-CfqMpp0&rGE0EMmfq(0FNn1DM3<6 zQRFeC+D+Vg3XCrXIjA}6WwtP-v-g6=Up2V_Ho4g#2YGOfE~$(sd1lLGIYVn1o{oVV zNo9&61N4zt<%|_mDF(Y8skEe^Odq;)1HxLr3>%le55Ns01OSIs$Tgs{j2bJnTOS4- zWeS&B6t53vwwd~%pW^jl0uR8N4l34fvCRv8E8wKaFqPmZ2bH`URKpXcJbMD;X`73( zEX}*pijPudQ@EJi?OX>#esz!`53d6W^BNeR3*j+x)-#B_&CCKvZ~n>1-BjH^?@4Nx zjB$pU$)cO~qt?xgY)dyy%;75Qmsg=!sWYTl&9)gWo$A8U+H*mS_LxrrHTfeX#j_mY zkAo8hxD@GX!Fh!$?QA*eZwjfgxvwh68ETT>A+;NR)-Tt_rSA=J!$^?Xy-u#k?t)9L z(2$KC-aD<|YV{??4`HDR^sJwwg!Ek@NE_P}ds=ZC(1w%4bm0u36y1jarH@{1kx^=@ zd28(7W3hWB!a#MZRNz-6tQD!+ehR1wJUZ?BcxC+@8PWGGxb94}^Hemdp;kwz;jStx zKB^3xjr8frU8}AfuQ^xd6{1eN#);&pUxbmUem#_|XiUj6pAJ!N71lZ^(`?r60t%Y3 zDmCyyW1cP_cx>V0WJEyX)DoTocL3q6-(hxa`o0S%qB%=PS6L6b(&LCRClBed$|5k( z4O0UPJZ7PUNBfRe#{*&+x6cB^FwKT+2N@}Y6r*Hm<`eJh<`hrW%6baS0Yw;E&U``3 zy8)f{pF^ihfA1pewCi_UWJwEzaK=QnNmflb{|r>?2vG5guBN|Zb3@-zGtAs&ffY%- zrzIgZgg-Y$7vzA{5dO*LW9InZOZ78+A;s-KDrHj(#od6N4-L4P0;2Qbq=4@OJt^S+ zt=HjJO(7%;I1Ydb9fN5MEK1~I0p(FC@@0-MY*aQa39`nA1)<9k%lfUblR)2_;f4{C zRX~AUkpauD#i0uy$2X@V^4*;i-Dp$9agDasvHGgru3rMw`Z?LN2B2|$mB8U<<%$Y_ z@_tlOf6$zcwNrMHJCc2%5Ht;)w$!)0I$O}BzE}@|??d35;cS7cDUAPBq}-|gju_T& zfz1bf{|h&a7?7~aIuN!(Vg0ThZc&g@G^;$Yi9-3It5CM_Q7bbt=Kzvy{f@CoJPHz0 zX)v5!<)q9qn?T)W1uenpHmkrQD*f<`ndW0AIcUPJGnG*&=e~OO3|C7&dtRwu0mS+_ zSw!F8!$}Fa&FbLtcq;3+)VwkF&nj?br#okw8lo!oS+CjK0S6I!{K)h`HC?s~Hii(} z`aNvZr0-R5f*-(y3?vN#C|hr*tdz19z+;q;ocWP~23HX%|F6xmw^>ct_(Pm&=OXVE z6Z)pjbY+m73rXMAat@@xI-L|WQRkX@^{6rE+odQuEG4)xxCk%z)LPcrSv_k zNgpZ6 zpUm%CWZcU5DhSyMBt4P=r|AUg{=M}CRov_%;Iv<}3PGS-`_--cWVU2h_sQ%eYE|ss zeVTAW6Y?LFtzV&?a{6|{Nk%*+;-$=xzqhYjD=A0Sis6~(ECkvICnfzAC~7Ne1eKcZ zy9!-cRZbeZ)X$W2h4D!t0>hsX9ClWQs+1M!y9i?aM%oO}_fK%c2*8T;V!5ILeZLVl zKZ=|4~g1?Bn9*3YR)b|EOzUZn{sILRjFr)~jHe+{>43Na2+H|t(6vg%xf z+jW!X(vc5+uZ9~&5M~t&5#Wm6wHz}1Jv==IC(ta@BP%dc{eS2~s&YmH@N5|0Zs`cs zbaizfVl6Fzg(Fqs2zQ_@T>7TL4I>1L@#GiSg&YR2@o+YvDrcxe;2@EmssZ7wpMyi+ z6XAxDGI6q|U#Hane4+*6^rqgzYiFiGH|ET>xW@eEm{Cr^dh9mSP&(y$jEz6iD2|q= z!$N?x-Xskb){`cD5D~oe3~ojuOg@~5;3~UR4)n@tu;nBXD~=wH7_8{wps<2)C5aIZ0vFpcT^fY`PA+x8 zN88}^4Z;m07{MpBo~2ZcE9^{<4s7hF?|LFR+2L5|5CvE`&vE;L59NEV%C;Qk6k z&@D4M;_MEjTyE&Dcm+JdP2uKfs5%Uj>0y0Jl= zjnM{`a+T@7c_`a_U|EfR)&z{*uK3@HZPVYedTwVK1K%-@ zM_`>2!Gn*5H{nUB;vT%VeolQ&-^bzNTFo})zi%zF8;Y#k(ED^7itfS(*IQKFBklCL zuI_@}$m@Q?D>3~B^C@6XiDarJdjT{9@vWazanN@zoSQo}Vbs}5HNbcGtGc4O&Wvd6 zr|AR*| z`0Gzr>O@!g4K{uHUTlSTN&{N+*L?qnvMV*!s}QK?W`z0~oIT|w<(pB?HaNZOzg8N7 zvklJfnh)qXRVn{|P zCuq4k)iS)#zFG^x;e@^wj7<{4NlZj?vI}plpA(V3=er|LxFZ7FimtFnnUReB^nDD@ zU4~TFZ*D*f|Al4<>MlQH|6vPR4)6hnje101dWte9g<6tWhTy3kwkj8s!9lW%DPK!_9@4*ctITD|+VW(0ryTam8e#UI} z=H|zY`=%;YMN`h+BMq*C@$R|)G;m9EyHkNtc#1~<*yfhLYva&!H2PY-Mc(@#jRr~6 zVsHe3Km4{Pv&NP*eIJb@a|A6>d*7qAV>a-zy50L84Q_+=bByehHIafpD|L?XC)bmj zOk2n51<-pNPSlNpaVa&ipmztg?7K7{71a2phI-Ou*Qs>qdlcL-Vo1%_CxWc;B8b*$ z5+jp0|q3#&+}WlXAcjx<*PK3 zsxJEj_7y}tPvZUnoTTGc-q@q!DR<%VP_m0LK+d);=V(+7-`1&gK1g>!cUFOiqX@f7c>%t|@u zAga8r#V;{MTWcOR@vbm+Y)+%{w(FNoHLsd4JFJ)6mA6yBY^eFbe7VtjscSIh-N|)+ zo;_PAkSs1K`>0c==>%IuYg}p4T-Ru>1Dflw<{F)IE;KvGj9+EPzsnt8FFoU8Gh4!y zF%sTrN_b9<924)|L_^n}J=;_k*Q!nGMmbMyFl)7bWHfArGIyG3BU6MC5FF$*Fb9+ZicwP;L{snm8xnT2JTCr@dDtkIk zXINUg6-$A!l&%>o+UmC==GOI?E~tuzqgz8be<1>M4qGdaUcG87>_X_9MIE(`ty|;H zW>{NapI6h?rVd7Lbz{r2O~r-ND{zQ{s*6 zcly{t%!@m3vgfPpl+_zRHD~>LNHpcb4XB?gPCX9H_(H28`IM{aqt@|t${wgeWjjWL zoJ0)<3*4NPFKxuf&7g|`_>^IQhJSwET*MDkp#~g^9l<#a6-yg2WSkjNZ=sg?2+mV} z4VHuv%NT(>RWE>7^e5n2;w=G!3u`U0)R3z&{7%{W9zM4i4XM7GZ{z8^XCP!_s8XNG z2ty7ymL3NsB2Ttwrrhu(USi{#`H}}BrQEm?wCHEb84K0zNGUflf*NweI#AyHcjBbc z=Y$qcL8gRX!o5L(bE9k<4((DY*KT6{OFx~{*7n(y{froBB72#E&=O|2AnKK*DHRW3 z>^vlMBY-vy@)Bqg{)e2$6mC&rcnn$3`)>`D``5|QaUYYTA?5Tx{;KV~za3MTDcg>Z z;J#AUorWSX#v6%-F%_&!u}Z1RIi9b(zo`BZUtpE1j_Jf`ssk_M%yg=hTNBOR5|ae= zNR9O21Q0k+*is>Zz|0`G8>ifvD9CJpXd*bT<}?6YV1r0*9%-lJUO=o&s9@L$=~UGH z-vQwhqMSgzobwqo=fOnz56)x)T5GU!m}-UY8zGjbD76Moq-8=pl`#L^G1ef5?*jb? zh#|>femf=M#e|a+bkRYM4DrK+HJr|N$q^#K5}938UP%~>qH`!Q|ABNtEE@BldwD5g zmGWldGGxLmLdd11n6>ybpgt#@NRUW1*lL3fwJC2UnkK5VCQ`P3=T6au4XH}i!f6qn z$l_zmv9>Xax(R^qBnlYJ2ck&^$$ADrFIr%_65ye=tvgl9`^iCQGRUNf=pW30i&F`y zg(4j_?V+lUu26wW`66MwSrj78bUWnAcA^gYE>Q1@K{mFai=t+@!>g1`E*4LyqCgAk zLKe)SY3LikIjPl{8y;s{os~FLF`#hpi`9^|Mv!|upd4oc?0gGQX_#SzNv!U}0{`wf zrvT>@V0=a#QT|*eydeyOUMW)(2a}8=m9m``D{Bgz`u1;7Q&|+MEW{U|%2^?Gwaw8M_AvRUG)GLXvx54oC*Wg zJ|}V1e1{I}iO(_ii4ab7O{xdBVU}KBo-h!*AEsVoVraPuO>=ZW7 zHzy3DPch6GqSWDVk|I?mH1AG^rXG$P^`IHC=<1=kW?1$NCR9)B(;$)K#&aNiz$PwP zu8BXJBpohJXeLzS8f=V+DIWSLaZU~eQ3hVx5z1LT$-fTYN1p!fR$$V}FMfiyg; zd$L4}U1|GUGLTYMOu$xvon-^s<;1NK|4A0hgn9=sAICzuQk3dRv>t%oq4_jH796J3 z1~^v@z=qVFo~&e$*0M@7ZUMr5Hp=;|)3hq&B|{tYYQJ1}u(oDPURHVg}|TX@CEz)*N5%11!>!bYJ4HA?oW z?#V{9cnRa_vpv@yf#V0^L}(tidMagECH^i+m~a)WJW9)UDY?E6#GkML45{lhz(dIZ zu!t(5pE(Ri`N8R2mo9;(|HEYHThv=Xd8bWXx}2K&o5@g@LL%J14%%WPh!ZSvBq z^^Jhd6F5CEh9&k|Y+y~8^_hroF@8L#){-*kP-){GlouqQd1jL*{(~>wq5hhrrPzm`5LHaR=yj}-&Y2wriNddB# zPG2Tg#2*1?@@{?Y*qb={V)J8%32-8a@2~+1n2qyL@;J)a3xw-qP*irb0Uu^zO0+dp#|gYA z62=M6j3I@LH&U?lZy=mm*EwHRUQZ%pEGm{}Z3jRbL8QK;z`_yEpM98cN=i%`n4&jc z0_C4tNzhYt*){kGA5kfPOc(&i!-E1Pl$#CP1aMYE*4&0~wke+{E}kMB0MWh^q&bsm zoCDGqk-W$z8D9vcOR;GG)YQr!n_xffW`XZIT!@MncA*twXj`CH?1?%zmK*E^Cu!GI+ifhzb2ZR%C z6g_GclppmE3g$)i_zxH##Ng;@I+;Dw={k@!qMrK|y!l6B)dQTP4`v-JiF>zSpmfS^ z1ImLjNM=6$DQOUX43gBO=VIvtoKB6?xzU3AB59z5YvKh!-fN?aCT6#FL>pkxf>m2V zN}>(cY@13MQfmAa82_8;lt5{8%g7txLPGa1}N)Wq}MsyXcy}-J~#<<5AGI-D#Y%u4N*d_k#p-<^|ItR*75p!$?jI)(+}MJ?dwba- zKJ79?F#}sBBPW^1YM!dp8E{&UWH|1K<1pcBmOs&Aj=AhUabH-l9@D(~gSS65(V}bu^)=-> z-9H8^KeyRox@}HId{dlM&JJm2HsxcjIh>Y_WP)&%-PYP>c4($0%+xH42xlgq0m_RO zl1h1D9jf-Sgh^vcrLC!|CXAH^u3BnR5bZx)Tuz$4+)jj||)(fb+#uE7U z{(yJYS;GpH3c|&w*i~@}?#2CutE;X{0C`g{ux8%g(jSO+4fZ9#M$GJ3k%4 z)V`Kxlp&YuT@U6SvKh1sl3Vp&`9^ueLN#-+Ij0czvEky%xNDK1E{*Sh)BI^&dIzli zr5E;0UHZp2%9*Wn?L|sm0v9j1c%_>WNVEa5tFf=3bXcoci4}j+v>j2bR6blhht9G* zowcRkD2GrzE|U}v9|d=B_Q0W3PuOGu6|Y4*1+srB=b|oW>TK^AK3CHBUxfO(Qo z@-alJAzR$|Hn^h-TPlB^aOw(4plm%yrN)psm;{8=iK3>d0kSPrrM#DTf{KI$`l}+P z4$%KLG4!_!ZX;7EpCnGb(AjPT51*&hBsi^YoREmY znwu<^E<%#FU4YqbL%GV3PS)yVp}2oTfc^lGf7(DC5$iOiys{p(`ZuxDT zuT&T=UVa+uWmpSmFKX^#f|pf095fkWA$Xxbb=V z0r382V>-22ieP3BNVujB#$vj&bkky`n&9F}iJ7GWoY%j=I!6xx^S$o4N~d*kzd_m= zx^Rh76>vJCt_;0>12VKC3BVFpDQ#)(maC5e^ko~^m8$|A?O$Mb))p+qsu#GPvsTbg z{~FMB{@x4Vr@MorKBTxW?_XRylP8raRRq^9lbeWoV-l#vPO0r7kG})VyKP)o9t-aC z{fg_(;=_-|)(5zrvsl1?+W+7>hxY*YhVIxZMPPr|udsFo`UcOULOWUJM5SP!)_<4~rl39z#9#M*wjA)Hr1){nullzN$~!a0;c=~Wakf1xGOwkl~! z2(7Oo2%KiA1#umcFboWgf%9zYs~{Mif?({8i1{r$b`OGp?f)i(n}=gaF!Rz@RoxU0 z)xz{&V-qaLj~Wo;zoW6e!Fky@AZHKiFC%r;#{k&G`_xs)q007xU|VCjCcL8&#*`de zBJFx#?+4`ORHj9x-GTeo9>S{BwWJB#iZ~E5T-{Nx0tMc*g;$*kJ9TLn{x2eX(=NV8 zo-TPoE|>mJF1rI~@!g&y<#O2yxm;c^mn+Vb%ii1Ma^(-@a@8Ahxmumgc-Ksk%f52C zTzisS_FpBJ?>-=x>)({i4S$u(jYH01yqinpa_d&P+;O^G?)siw?s-8j_x(;T_oto9 z2oL1S<-sz!e7{yM51k>Ghi{O}BX7v%(U0Zw*x>UR@9_e;JaLR%o;+7BPu(Jyr(c%K zGat$2*_87c;YX9@^4u!9Jl`gl7tWK*i+9Q8rJu;<<-g12$0IIayjKe4^6DD7yw)U_ z*DsXIfji{#lb3KAo)$3vDAzP&;Dvl1V9b!~aD)5|Pa9=WIK$J%8WhX$wDAT7GCXaP z8Sh9lUarIoaE}B|y7GPW12mf60r~YH<{c0`OD+XB$z|rVaw)p-BEBnrKrSV}lFKX~ zYC-RS()T6EoB`rFw@5DYw#j9|bP2NXE$Y#L#T^oI$>nlc`hZ-@-jK_(?@EN_FUY0* zFLGHiT%xb~y98N1PCVDFkjvT*xvZNfLDqi+gnXC5IL9uXG6o*!xeImbSpAx316z8F+teNt_b0J&gKY5!MtX^Cca_+j z16{Xz!`A_M2jS)KKWoUpxdUk6DZP-gw)aTKfKfJBRMcp8?$tnZPi;5J74o&7=v-fk zb2$iltrgiIDN_t$XJz1}y)aN1YeMA|PSB(CBQalr+g^r`KclSmn z2r^bMQ5lTOmHIcySSo72R|D_wl}z|VI~bX;Cu$#plzc*x7!be?P-E{(D2mmxh&CCj(vRsAV`2r(j01Wvg4Sy`JsNhyw+fZM z+3dR=f;H1(7U(c-SsSq?1kSUE(i$Vu+SVtgbYG(qagSwuO3RF2-Pib-M#o`I##M-a zqea8G${`f)E1{(=%J_ev@Ozueh0qI=oyNXWSu5O3ItKXtx-8m_`JIPO*te(loJ?`btcg5?Vh1otJG|!q~D?V-#4WpWY|3+I+#_O~`sUNvJko zuuMKKrk~X(D%OWYX5kjl30t%bva8zdK@5jJDt$MI;sfcS3Zd?n%SO3-LGU3G72WKh z$=E7a0hUwm)350p*@FC@qN5Pp&TKjy+M-cZ+K-Ue-t_W(Dv&pQHXl19;r50|>kbE8 zrI&@aATd~b688q3^Ft-EOi?=xQpSPj9ZgNBd)OiSWCQv;%b6_Hy>+cBZ9jtLG_dX- zbj*9W-^BYt$4c(ZMtvzfnVtS$;=Siy3SOn%h5H@mdo}1da?0wJ!4>HQ09e~tS4Ys_ zr?ZbXxM=w>{`2rPvJ5w%aen&26JuH{Ae_=sZn^A!MJ{_jmCI!rS2Ox!g>rd(i(H;KRW48Nm&;Qx;*xJ$ceczw%k+co z>-4Q*^Vt}(%izRE0nG#tIaBV_R(%T|oW~e)wyZ-gpi$%@=ZQVN0-6aPa-n?E9;=P| zcD6Rw;s7*u~9&(j*34?n{>OpNIC|GPWVzO6mT85rwzQAN4YVe(^ z5nTKg&M^2fdq3`!ru58Lq*Sr8Q;03y>LzBKPKuNNwH~~^b|{L${Mv8~d+aW%y*5Ge zYO=`P@k9P{D1y!&c-_n}dGC;1D(5>#N71u@ky7-PAY#lhw7}L6d%Mmo0s2vD$p0P+ zW@bsBD4A^?^F0J*&`gYtgsb_{Rno17d{1=aaC@e#)Xqmop_DPSY3%VzZT@LJQeljF z7fLYnOjdMa{9E@mo(976aGoVhst$9uI}9X(w&+6y`OFHYE&p_#YGbOQ7ur#DJ2(`$ zLQ=PZDvfHrJl-PpT>I$9(o&p3)Ea4qO=Qa|wVjY`QS75kYw4zu^V0q`x1K#8#V&Y|LniNKeefur43bl0gv8>5lfbI` z62zTn#aA=M#zfXKL}PcRN2^+vl?}oeorroeqhCw4ovAITWUV|{eA{G?F#8B1Kjjdh zfsrh0qP9nP({zqR{u~kiWk;S8Dw9cUmBy8WJDWs-n_w#bzaxr~G4m`t@wUGjS(svs z9D#SLFy+e;0o)uNI;KD!wruWU%jV%%p4+aBM(ejR3NZ-TL;mdDC z==VIUyGC#7KGFZveWG9M&d__hGxWahA^nDZqAj(Johsu1v~jkb(wXop>*`XZGzUE_ zgMCE#LpS1H-Ho_UcO&lC-G~QtH{wBdBf2NAuBo-EohMDm4O3YA6vz%-hvt1$y_2l% zlC1em><`X(R0|f$YiH$^xO{KvST%R z9{UTT>7y48f~IHkAcxV5vT(ZvR$SeUK9;qPK0Zb-usYZ}Cqner>VO4lMmaVrI|i8M zV^i7{hVqCt#*+{XJrfyZj;`t(Y1)=Gw^xDX>N9OZJ%%on1tSlV3^1OX*V2BM%p;_3F5ej^oFAaw!Lov6j)3`7~4g;s%b~n z&S)rnVh4^K7~R|_q8QP_qO>cbi=H(Om5JNYZGETbj%d;ws(X&E9)mHu{bgu>0Haro z5k_~gmnq-aIFGMfol2g}Yj^V81V)x#w%zPijGQOE3OTA}bgEe)#b&w2~qE{ zq8lZovFy~Cw5gGtG(0FLx?lTekol)YO80GN$}DCysz!1WVdX)Il$c@5*5gCRm&gNS zL8DSD;5_pvm0=*Q9DU~`Cb@$s6q-VRrGCawvI(V;^ zeV{*04yg0S6lfw$@sWeMU#kdUYOG7^UQrwJA5M!vGmu3F7Jj`VXlnuoqJfV9{aJG0 z62X_`VCmN?g648d1hY;=(T8)3UCH|WWLvqe9eMd?BS?;*Hk zecxO3B)hc$xq#ZSu{9z^84PX zC&7ZW>Z17<0Ddo7pynI@K%M#(TJCQvlz@gMs(ZuLCA-1a_?e=|ZJ z1c{$V= z$}j@bSob1Oqe zW@?BZbb}0_+#qvZjF3SJ*U+`ysTrwBn&$=0;<_1dBS3`iu;pk%?^^NZ)q0TBf zuSYTSkVY*(K3HqH$L4S?cL1n*Dbd*ZOhll=@mMJVcEAIRe#UO6gabQjWUUdNPvG;| zHmnc|SJmP$T3LQH_BLZWKIx?fX5#;3`(0I2n6LHmrD~fo_DSRL)3C}dd+f8ubqG0F z4zmrbu|G2Y0e>}khvo5{@qh3L93NT_u;-1TyYTs8@D8l1tZD5)4vl?5yoM_s;3-2I z=D|%hSi4Xg#_T?5{=ncTIG^@xYT|r|Ms$2u~%@ zN_4kz1e8Jzw#nWj>Jm_6^{L0$ieSbad#|w!QS;lY>Q^lZl`mEPu@4%*C$Sx?s#@wh zL;=2UP*vfzggV1ad`Nse^r;P3NT7$s%csU_I%6L(z5_C;0T!9mfCqVwif0Fl5eh>Z zpHl-=wu!7>s3*lNEh%au(WxTV^9Cekx$`_!6hdttH=P;hs}0vQa#e_|Xj0?yME!m3 z4XqtfC}k91$lBDn8T1YK>LaZkZTKXr#^uu^)5ns@90^5tHdkZ4ljThuXd&O^%Nqx{h@P{2IH4KGg5g6Jt4=kpn7#{rEn$32b9_ta zyIh#8i&WL%sMq?&_NW>+iz2P?#rVyp-#TAgs3wXJQP`za8%D@d`mTpBq!6k`a@t^d zP>q{I?@Aw*E4c&DrSAs##s;28?~SAZRw3pn_?=I`V;I!&TR^`}$W-Q4YJeJ(8n{mW z&%%Ew6tc>ISffb|e2MHE8ft8& zH6x1T_hc0~x_nic%AR>Rc*sJV(cBganT0(2@u%RK8eq}4Ugyg`%C)f zw>PVa+3Qj+!~U(o?ah#Bjmlo1LI&iy8K+leSIV=G@1d^|mAyec0`zFE#p;~wjpC6m z9#}$_eT+P3@_8qZ-pJl09*5Cmhs4+{9>XPscpNJpqv_EYt&KvWTf`?DJ95D2*k6XD?hh^`4;q~&xdwjt^NQfDzUq@ATx>uT= zv+$ZX5?KfI*R^#Bg%qK{Eo}yC1NU1H804j_mh!FqnIMA@(qFfuu@;%PPuS%yIEkwn zOt0I~hI3rnk^SZJ{f*n>^n21dLLor3rm6++C&_#6n{&VSn+Z%6_PCu+bGAVI*^9~! z$SZ$yb%g7rvM)+`8KU43)N%^6!6)Nic!W^cGfWMLL=jxe^kNCmJ$a^V7}JRax=}9Y zQrXu^0+%o#|3K(=W)0p8B}nNKA=Pe^k~@bKYFNQHz<_2k1#uAe3(L$OVFXKr^+n}*yggI`=jEh{yPKwG7%llXC z=%P_l4Cx0wWVJ?4MgPZ2Xm02fYVx8*QkX4laF3_MhG@DOhUpwH3E>7%hZlDkCTD`s z;qK6$=!nEo7B{cV#I=CtwZ`)gIRraraT$l7C`z`N~ zZf2McgZkq)KCX@8zEn*?!jOJ@>j^4*vhd99st(VB-j0q&_MdzTak-1tiEGxdLZAa- z{^DcTh+ABH3e!~=X;#_Ak_zsBbx>^SwYNeM_lSJCHCDAmDgN)=tQ>UMeu+pj8kNV19Qt#x8Z749Ngr8n z_4AQ3IK^u&0#y@oS&2$y{XCf?K*laE*st>a*AA_oE)m%uuW!EQ5F zSm|-|#0oDwO&=LJPh4mEv=KuFwG-EKOp8Em?bfh%VkIX*;8ow$TCLZiHHF!m?TD(0 z8>lLHr@7#u0KJh~HF2ZqZ?2fP$sfZR7le2GG3la5$r^tX$Jh+O(Lu;HS26Jw&Z?va zK13qUG!O!v{fj=BC|iC6T&+&utewl z$Q)xj-lPT?b|{8?osfDUcMdm&`A+O;ZCAN-nE>UBgqv0FJl^|MK!?knKT~2gSrsZlOjj6`^BwaUHg2E5XK*xwRSxpxzL zm?e*@NPUgU9U*fjZqH7YJH}AEnIymb6U7d&1JMv-yfH!Ev39iHg_e9T=W zuPjf@{wB`72wk`}3axaiF$NhoE|3Crx0{g>rFE-eL;eJ6G zl!$ku%H1uYxqr~{Zc@3I8Po{wCp5jQqZnS+G^pGwMPYx%H(b}J|D;nTe|&+geIFMY zsBBq}q*0p!jFXQZP1qJJv)DGxQ3`x#vO5vXG5z2v?mn#)}dCaz8v-aIF7xbY#L zXPtEHzg4-)(SsxkKUG&xh0RaDMm4|kdB z;ikW?rl}QENI6TSFUftU)(hH5$XOxY+=ps=MoYmsb&8sedw4W+xt-Kkr*L-8}4yA|9smz=p$T|-zNbYsjxxq@-B7@D{Eh=ZT zhjSs^2CHQvt!;Xp*@@0sBiYIAu@X(f90BtD%Aj(N^RN_f*KE9A%LEI9X_Vsyh5Kq9 z6wOC^ot{6*881lOa~q2k4Tn!qIaQKYZpGDaS;3g9U5BoN$U_hNr`Tb52YI|A@@Nl3 zNph+^jL1E_8lBY!WPGVm=bm2e&Dj}th*ZvQc{8mI3c%dE(!;I3k_MG-$>>;NgqwdY z@u2d>z5(Jed0@^I=G-DLxI@^Hhng0FH7HaBId^*gz&9epbW=P>2ncr( zn;_GWY|cyO-0k6}Vl5WtHZ(fi-YKu{7Z`3fc3uk|U1-yzRuXE(m)ns|Jwd_7fGKK% z50uy3rtGkLgj&FvPtKL*ydv4_$1{?ra$Xg!<347gru5Veh65VNO z9 zXpa6GLV8%uM874Kb$-ts$ z2|tlQ;cLu3n-}l6BrY|uVFhE-lHZ^JZKw|l1m&Op?mA3NAB;U?3w zScW@h!1d^>D5Hd4>1tc36CJg@N_*k2*eBsa{-)ATL%;P zZ6*+3KTxY0TYJOdYaY|>$@B`H9iVZBO-Hh*TABcZd!~9yXCYsgRYZ3xh6W*@5PH%k zaypq2N-B-70vlyQKu!6O?f3+g)J}EOqzAu?-4@2J>+yZldz5I<-SFAW2+Hs^hdNs$ z)s0bg)Q*)<@47hr)O1 zrO?ZOGK_@NStZ&uUG&mJ69ETJN;mx!g4;l>%_ivR=mm!E?|E)L1l=MDhc%Mlv#6lL zCTVpcsy(~Ns=(AK)a`=naq76P!`yFm{k8H`x8KyDhK?!vI$KG}738Ffqt3U zDzccmpofTN`Rwdc3%~-(r$>lv1A#V+i0;(!y_zl+#?gvM0xF7iO- zP|n#(HRWxYc*8?+p_=kL4wf%6f+&mZ;ulQe9kwdg*K>`C%&SeC$}p?4r)LKX;g4_L zC-4(+9a@>6fw~WS`Kx!LMVdaIT}%Cpk@WNlGMVBtgHE5wzyTj;6{b((eWnk?%Lo@c zOh1w_hoj+?dBQl5>A7tPeX-GHOfL!+lQWEqQ0e2shOqiZU{<%*V#bHZvP>@~ZPUjF zC?P;V2SbmoNll+cpLFd514tbata($@XVVw!rm8SWR*yAHFe@;9?$BNQDqfFKX$Q=n zYR`Fu&9(yCI13qnvgNIj7SV5-4$&Bpj@{kVdUTaEEJTeh*Psijp-UqzDJjPYE4#OKv~uH`dX zq0bt2QyPq#57$A_EBVl7AUAj;6Wu3)iAxMNOCt=e95GoiedDJH2@Po!4Z%cL3y;rX z?u@+&d7(3AyUrL}Rwt0rfKR8Xi4W$4 z(eycyKBG+@9X6&%E<+M>rlLDEIdAl@$rL7^qO>EEH-=H{4p&s=jirar7a{+7<0vd> zP9w}5;In=Q&Qyx1ynOmXdraS!RxCikR^+@O{WER>sVboCj5bCQ(ww*KY*cyk_zp#@ zrdj1JI1=}nyoW4R-a6JMMx0rqt#m~-zye0IU?85?>a2Jx_ z*2=|dDzA**(|j1_%d(L?(MPEACY86GNh$`cng(_Q<3l^N#rgW%?zscjs-c{~ly2V%tJFDPL<_waWX}JHQA? zdX6KjlbN35c{fec6XI=KXSC zC*s$UiwdmOtU+~yJOY*NOv7gF1silK?*u|_(;hN2ukxDcRqJbSZLh-o2_iMqqX9*z z3K3ea1<^Jw%Mh z$;>;A#HA+B+r?lCORc(~M5og~fH=*#W>Us^UGoq&buh}Rs;pFH0RU|;bHYv z-lZ~whe9A8__owi-`)WK-K=#3mOni9P?DJ_wkSL(QdWU{SRGorj7 z?rYttX0)?@Ml;sf0%^_YqKFroaqzs8jofm<(RAQ<68$P5LfyK+=i6jvGmC?jc{5IC zplv?XO*2ko-PGXgg!FecAYhx+F&0~Al9evWA}ptq7GuU)quGwlI9uze zS!ZE6amxv6#yJdq9_v=rP#B=hIFA$cyJe_s`kYUnt9_U;oN*yrvg^mA*v+_@iap#j zzO!1*xa0=t&()rqPf^{>*!@2c^<)nIiI*Cn)@D-hGcNm_8H0&lbOreNF8?0SF3dJH zMy<7KIg;137o->F(43Ge;RLxvQTg|By$%ft>G!lcq)P0!_wkwbg=8*8UeMxm{{5u$ zZ`es2qW|Pslz5@^v^~?9 zfPY!OhEtL*Go(}RIa21V7)5_cupd$3dL}-An3o%m;y=y%KbdD#Lm0?QZh#mR_`j=p z&)tQC#0O<_JMTXef0_^&BtEGDj$6_=3LX^TuzOH|oodVkVf2lf@p`kobFgv*Jg&x- zYu-ECtFeNX1~Hj^=fXEtBBlm7Y)|7f%b)-!f@Yy7PYax^cG16V(iZNjTH4F2S5@bi zl@-ac2xaQL72y7$fnm+x3Vhj0NaP9{$8&a;7r^RG&-R+i8_Qs97u}aKbqj>F3%{fi`Z-+}kWh99NpE2FTw%lQG%p1>&NqMoVrT*x^H&z{UlHL@YXvs*tmTxI+) zh(j8so4%oSJ=$dDxtvAZv!_=3YQHO38F=<=yV_V_GM{ZSGs%S2;jYr*w&LX?PN?L8 z$wHI;2Ah5QuJ4)swYp{WoS_*Es70I->OkQ1Gqn`(rCff-e)|42j!gJn)??c_mqiK4 zq6W`)PA)R_=CTQo3}ZZdnkMOaI+^$Nbg)fC8m}=fFrijm52V$c;!^Je=X1C`D~Ix4 zM^@2(m|8;~^x(hO`M0I{m;#t{pHja$L#N^>MC8xdPv50*vkAd`?-RWO(7O<^?lS2W zYjU7R-z(hoR&#bw-N?Xjb^_EIhB^e_ONjF~gj;Unpzz7h*iYa8gPTpt1t!D zXVCpvWB?~nk3;n8T7w}qR<{W`!PtcG)^CJ)W9+BzHn`a&NsJ|&0Da(eEkk^hlb^AF zA71O6U!ikeO~L>+tURkY|LWay{Z6&yxjV32$BY@YWBwE|N6ARoGnb7PK-P*1&6nw_ zJq>EfJBawNT^jOSJ7V4gcEo9B#8GDd$uo`3BGqq412$NI4QVx@fSPokO_~kqeJ1G@ zHt8!!nlmz8MEw_T z@Sx5-={PVGfa%gU<-eLfs*_F$pAeONVcdA7Iujo&}wZvNj1Q*sR#8R2xW9qj4FKQj5HPv?ts$2he&p^mFSdEjR zIfj*(FvBu5or*%6~0COiCtTwvF?VdVHn)`x!A1C41PYxdh+oEt7`q zZ~7}ddo$V(u8v&_7bDcmxG$eI5<2KV2ZDEH;$=s2(3U(7Ja-@lz<-eZ_; zT@l=GL;=D%rSbNJG3Xd~JYRQzQT;SuU>B*5Y1uNxLKq(Wo^7U6`S~>=A$=+_N$}8d zHPVMN0_VBhQXzq`TtWBxZrwS<-b&BSHM zgjs};OUI+N{WG9GC!9!-NHrMuV*b_tR-$R5I%^_j>v13>bzws)CK2JZ2(M%DvE^8c zd1fy0^1qWPpd9*Ql0mYb0nm#Un63o4Bp4G>{`ZrE&}5KF69bs1fs0cKsfD<^H&oTp z6)I5vFA~O^MIo{}bjX$ML>=^9pxzUMEQdL%e0O-|&*a!Hp&Ab@s0&#zho)hn0GyLr zjd@Hu>+Y@AiS2r+%$@+|3pVaVHf_t%v63Us{A&r9P?4a)J+oSJey%XoXjC}_8}@VH_q z5+#&t;tuAp;}3`^uY?8V!cbXR<*bmp+U95rdzkz)IqLcbIbu#|mKKH7)WMdJ*u^yX zXR>rkf3id=6ou3^HkxP~|4g*g`x8x4SQ1i!3@dS>*HVH;O9sjj(#n5M;;6K?Z5>68 zdSWm-9}&Wdu1WR4`q0wr%M%8Y1LdN$aln;_g(39@P~L^p&DZ@DA(5Ip` z7l@>(pyJcTbzUaSDZsg!N=ctnO%OU9!NNf0-p;3*0}cr@0sqHYUpp+tG_v6 z5WOfaV+hPP!byr$xzM~j8Jc=HZq$Qj#G1k| z`Oh7S4?u8^R%uO^Nd*n|M)F`-8@d}HxAXucMMeX?-w!}$vi=LC;aT02C0guC+uxFb zl(J$1wgT)d8_+H%ZjJa)vREe6JAnB(7Rr^PRDIkgS|mBNBv=63B{+9PPl}YI1!(Vf zY^Qmu777ZQPZMOpVHobfxoQA5r0(=&C4;n49$}rPRUt1K+PxjpV2hl7Zze-s3W-SPbrY{9W(+|)Zazf2M zq|;kL(Gpuc9ADYsoN}TD=(DW+Vv0Q>RQsSS=?UKg@^@MgHuV`|;W;_-(yR52P-+02 z9vBbcdLDmC!U8i7*%HQ&2i00q<{YZhlouq`k0}vH7v1Qznay6G4234dDCrCNz%w5~uDyNk$Uz257%!(;puRYx&$p zhy?2eAt7_4#*DF81OulldjXVI%*J^rc^qZz1;X_)C~ADP0iWwm2;ms}I!@p{kuXkh zW(+Bm3nOJ57UaO0b)EB7<@F>o#-aiMk<)env=Kz=I|?iu!FFE%hY60*5{EooX=~nfE~SV~emBi>7`UsV7t(gm^KD&mE5s{BTZTPy=8z z%|9h^&I_vAE!Ove@-3uJnP}F9`uv1B*TjYOFGzSoEbDbJWdiQkBuu|ZC?HP-VhhM` zvmn#}llrlV%f==zIr|t$KTYzw`@ps7Fy)aj?=bp}j~FKFhv#4r0B35urrnx2=N55c zJOaX9B(8P+9_soj3G)rZ^)i~&eeu^p_ic-Db95vC=OhE*jE?dqqU!^vHC~U7g#M+; z(6>fM7lHCsHg!EZ66*Vtp?>hui<*S0A5N!;qkQH2%SL3$0|{dmS7ARBx+|`HsRP1^ zHi{m#3d)cA2LFyaEM!mQc~ zQW9;jX4_QCkW%BX!1#}iqf6N&_CgmWj8JTTS#xRp=E+Lcz-d`(jTe-4NuxN^9Zvz^ zB^yLfcL+#B(jbx)t5{8%g7txLPGa1}N)Wq}MsyXcy}-J~#lY}k@?QdF zz)@DpbcHS;*CY*M7pof3kJ=cnVkJNiB@J}&V)Z_d|7fG@3OhOR3_7&ZNbWtHPU0V#F5l`Q?Aqf zW3cjbn;oXx=48Y-#YyGtkY;96zEbsYS~iji!qND)R-E!69hzwgGd0U1!kLL@fbyb+ zqt^JZiHBb?4yr~m5|WEUUG|8U|wa2=)7HE|m1r-A-<4;(n{ zG&#@{lFI*h!VJhVQ$4NefX^+(zIQmCdV@V;G$H;b2>;R{4jXpPP7vk)Z{jGynK87G7;b?y7SF}L12{7= zbu>2YADotW-jjl?$g(p3W>A03LU6hlda8MV1{|F%pq}v4+IILnY<+~&+Qtcq7_7O; zV(B6z3cL$2yKN{}8PdsGoh%ggI_Nb00U-ahfjA=8Y4Ytm1|y~|iQ^PSB*WbD+c+N^ z`r+c`r?E~>8cXD7rt2Bt{KCev1?W!P1^ol4sjtR^-j-I z?=1iC`^{^+*=!!0c<5x_&YStZ-}Lfke$yi7g!F}uBXwutNg%w$Cbg5)%tB#)tAm+! zUj6{m>{(W9ZDN%noS%0br=6+wVB2mpx-xYvGxdjdFcwLs*5Klv#60}~d|%m|PHUDS zoVi`nZmA37Io(;hYPM1}FbTE9%u*pP=vZQ%qc4N=y_UR6$8~mxQQ8?gbB*`zN>H{Es&L(!{st`AJEU`Oli{@h23rzB?753wQ26mmlw}JSv zmgFi!c+cxtUOSVA6)QCnrbQ;-!qvt-?O>hc)Y>F@d^tF8v3Xs2EWA&5D6cz<`y7I! z4=~BISjb=PcygV?JHflVCAZ2D+7COF*3RHg^RVj^CNYD%G&bSBo~Y{db^5%MGzQPE z@!|s`3Z4^eE@u{#aTyC!Fe~lmc(QfgP%j_y@P+Xni2i1iu>>j26Yc;WYmHo(O6KFj z0~nozcC^feN{QR{j^jjP3hQHFe76-=>1@m%NBDPk06(jVrk+}YtDj(;N@6DM4IMzE zPgrWAt3YzUP2{93$15h~QyoTWrt7{7u>KE|n48WRX{6}LS*h6N#X>8iWxV(M`K8eI z_APooQFWBb@~)-_e)tkruNL|krS z)OkKPhz`dU6;KsjAI*jSrm0g?LrtA38XmQx$j%FNeQI4FWJPm1rn2WDvR%R76UMg* zlxo^4O0u-g;8Zcs&*8L)SXl&m z;XCiwCC+_IB(}kM8R;_b-^ddqxacDg9M0$9BIM7CSW#g^1Q*J0i9q47qempB&-A`W zX)b15ROYpKZcgG?1(y=jPz#`LGF;wNtul-JU1r{OBJ|I7IkV?6w9fji{5t!6vCc70 zqT`PJ#o9SrtaGcxI`2fW&c9l$3!W0|!neh`=rge{9&j>)Us5dArD3ryyHKoMcZqey zOJZI5xmdfqox%Wn#)x(G3bC%+D%Opci*@r8V%_?_ShpLeGQb_f#JY2iSa+3)b@y>% z-E)Ol_dX)leV>VSf2Y$J?tzhFJ-9@yhoWLVe3e*_JTBH_ABy$3|8xd;Vu)Bz&K2va z4Prh0OR;`)wOG$QE7r4r7wfqmXE5AvCyMoasaP*;6zj#)#CqvEv0na-Sik!VtiD}> zM(|A9nZ^jQyBG__?rTt_+-3^T(GH^YsPaGiNR0(yr7 zAM=h?f7ZB@0Orps+$~nouf-bwo>&vF|0Ul|dReT=--VIDNTT z2OT5U!3)I8%zvT~`m<)AD?aDkF4o+a#VY<>ta%SffcYPYRnk?$Etn|QqMqWoc)D0i zs>ND*u2{=>$&x>7xq*^eNZk`5C`U$%Je|+HbrlV4*CTw_ufX(Pzou5Rt|1?r@65lU z*&d8WRX3Sk*ZYW_X_P|y0{3WjtxXel@x`fdECLU3}%L{iK(u2t%a?L#f5z#K5P+t`>xSe0^7qRcI9B#Jzno+ zU_PJp^5?rHl;1r4)Ag8Epsb@kGALk>QVT^5;J{vWHP6$wNVy4otrt0$ufX*{B)!NA zY!J#!2GOz7^_*4&n2?}81t{+j<V00($n1@MMe&dPl1;;mx);3S$-8V$>&*M+>!uw={M&Pa?O-^YM6#PLcv_{<2p{rwJWOE`Pu(9Pb3fPxPLp&1%R>T+smIy8+=10iiy)vdYS6xJqRo>Iq6d zA4v!#KqJt$S%{*sEUMLos_er&p@{}GGYs&a1lDsl9+kS`JB7+#4J>?pYAcqewk+T< zZr#yx^nvl+#?%@pskPpdP0K9{sQZ|pK=8iH~1s1*d*_U{OEgF|B zI4Z$2%%&bFEt*ATK87aFpItJV1<0R$Ab%c%+iW&O>$f=MD!Vwe26YYlP7>Z=aNbr8 zELJR?29Z@~TnANywub|qmMd=)-k+*+@Et??M_;!oFdk#my31U-C~{oyjW-UI+tF~E)Z+SJh9HJ z5bONo#Jb=bu`YU6tjj+Y>sQ~3b*0??kh6Q_c|_T>Sgflyi*?QEVqJTySbtk2d|wQ! zpwEB2AdX-DRjjXgHL*YEUxrv;4-@O(8))??zyAbU6@OwhdxTFF$EqvDs=iOG4KIlm z`BH_-Q)K{#UgT$&0iB)&BSeti=6@5~y#*f8{b-Iw@nhp@Fd9heq!(weaTC8J# zDc1JgVx9PqSSRr|TYry}zZC0~&KL35skvgEHdUyZy(6`C4{>+Qj`EI!z-&e%E^qwAi> z8C>)jPZhyEPn74(`D@|8Rg9h|%O2$MREXU3G}*r}o+^TSo++QR2Wy4C&GnJWP(wXe zH=?TNPUBVN%6RHF?s<_635y;$49|CI{Xm72Y(dPieu=4|XNsjM89N%rVR##c6raNw zWBDQbVmv90^!Q#Pl`d=+u$k-JV8$^-%%4u#UTh1oa9m|LPCO15)lM6bvYI0DWPHyr z+5&XWzw6$U(fcFeCUSLbKqE#LP*94o5|S8e40Uo(Qo}Z9m4Mfk_58Lin(>o8Az`$} zPLuh*7KK3zF*q77=Lc7bx9WMVl#Sl@D%n&!ADse)Ll`yvkAxP5&#Dm%V_*b@px23P z=*pm*saTIS9sftTIHQH?%QkC(aC&(|hbs>!C%Q8p3-|lC@P1-piuVvTdsO)T2YlS5a=>d!o#s z_!4tc)qC0{coh_F;=LzJxD_80gZBfsb{vYsdCYjXsjm>$4_e=oY!B|nFN1Jupg_z{ z4T1T~c!WLB3a>R5>E^kcvAWmu%t z`p}SXXp(txWhd2tVke{jK6s}lcKWGb1|AlK4l7c9=1uQ2ZyJ92_gOx3H?0-9$Ix0S zi--HHTPBX-&0=lXDOTi0SQGah>SMr(ec#RyfPTxj?Lo+Xhh8Ms+B?Kr_Y$mLmd^LY zq0tp-G{eTH6}tNTS`T zk?wVn?&JPnjdcGC3yE&nGi5glD)1B4{bMm#)XS-WVN8TMtenXes&8n-`FeksZ}mc+ zVd#ZCpDf7v2aIN6_YW9D&R#9I6a~somxD{{Rs))1_!!LsaNcn@|#BF+val0O4+@Z%9cj__5T^wVyjGlFs({y=Y z3@iT#*sk^HUk6q@(b_1{I)O3VB(6X4vBr+!p%5b#d}VzTR^A1FQe_(W3){f2sjsWf zb&*__4#{+rM7k@h%%>WK4Ju-f=^s?Y0S_z=RbX*|vAh?Y^hc#ZQxC^;<|hzIYR8~y z9C!5Lh-}dG&3xpjYtTU)Oh`!|G;TX@thx6&$z76m(FTH*9L1HN#-=R~X{e9DgO`V#q9i z)FgOmh}PrYT3)>>10xKFOhvSVDn0QOF%GSPU=qpcY6~7NRoXn&Y4W&0TI10Pw$U2_ z6D%$w4DCWLtJzYvtuYkd+=QEG2i1B4#e5gKrdwGj^@;tb9R2UN5bMQ26` z#m&uHzVCpPiM*DiH?m2<`KB7kiQIr#Taa-RIhn*6Sff{KZA3`~!m1gZ$qhKZ%_uul zxn?Eu>;l*x0x}6*1v!&#{1L6sI)3g^y$TNg*4G%tewTqrtHJ;E$>_&7ies+9et$m< zNQ_Y&Y7NftkCh)Bf(;J%_veqEPcTqts?Ks1sU)i5k*XNXr=ifa*qk7~y$L6wVSJ;m zM*5WqZ`RMvYgWzGHPHV7Biu$I1<07ki1(!c?#k4$F|Q1xbu2}sjkm!5XG$vRf`e|W0JqdnCJeiN#DS3>mWqccon>Fl3TJpL%2l~>(5r)z#UO? z!PU|_ELy`l+!4jHVjolUpK5KZUmzqJ^2dsT$uQYr zkjK^;_^|-H&N4c?Q$uw(g7$C5KxLi<@w@vvH*Tnp#&Ydn z`c2E%-HlFW1_(uWUqGW1w0lNCu-V$<*@`33^t0`d$q01M$q)y<+7C||)>B4?e8oV7 ze6s5)lPklWf;{NaDad0E-Er44cUBe_O|hc|$AIMsZ``tf@Td4=eqA!R=TCVQP}4J~ z1{Wg%L%|Ski;mR9B6XqWGWpD^n0bh!PCx#zc6#Ry2Dsd68Y);C(-k68)eVu}f@%IG7epyx%=6ij! zsakL3K5P_j$DN->ZtfGtL-5;8t`ZKb+$XVx1X1a>#d3Jc=nIG7`lk+sa+ar!0{qD7 zwgtN`E9#q&N4dWdr@l&ic*Kydxm!&I_BK?8vAz$?M-6_3%g~NBHC*wpXi&M2iF1(7 z8_Mb`YvA+O#suJZrBkF*I|uNtG^Z?$0;fZB4i0Nh~AN5*yvF2Ub2o&V-LGxG~| z#~53xO_1w;1D4C{#Ba_Esq`K{Z(4h>W8OX4u@@j0yxTjFnX{ zniDFSt2*W0Wn>_Ox@}ohR#)951>kOjg%wV7SZ0`s_lS#+E|uX@@pP{^Wng+JIJx&3 z4@gW{X*vZ50TNBm7FHxwhfMzN6l7uR&jw~Lehy-N3E;+XJhO;czv~f|O6PYkDG+M) zkTJ}-U}d->Qj2TeWyg~mQXs`Y7~4?a)QCdai0^9+YRFi+27}en`lbe4*RF<)qeD)R zb(1*~YTQ;^j{THF3hCZANVjlZ#Wvf$i0-*T7NrEj@qBZDyh$LPz&GRMjYB+MjpnPIV5q95tXk!b;k&;06+!EhSHNEb5DaCE zpm}5Ikc*&ARXCrc^2YJ^{=rbJwxO!7tQJ8ezYkEI4=Gtxtn$VeLWUmbHEJ6|A+wU_ zJ@_UZI|W(wtyj7gS9#CzmF3uAxxPWy!dR`^KW|y!))P^0Vzo%q3YE7!Kmp`;ZKO`+ zt&rate2?-PRe3ALAxMYXO6=arJ5(IHiUYQo?k;ckKr05!P$yJ$MAl%?uoK0qvju)rNi%gzZ3zWy|w?O1G1KfGS!)m%` z2vlKPJYV?zeDPnt;2)$AGf=;7RC!(feUVZ7pM=+ZkignwpsJxs5CVe0BX0&<1NU11 zWc!&`>-kpxm?Zh|8K~M4sYK>oD&q2#oP^Z^W>;-#z#T6!WPgc#fxFs%Pn>-eJTz96 z)#3dxdH+v5N?1P_3 z6pjr$1tmq{U8m_;;-6>sblONrClGKOx&KM!T_zC>(Ifu==xJsR-U|{^>1=`8VMEE2 z1Jx-=?0}iznIbli1-cVlUP`pO$a|g_l=o_Jqm`6HXD~B(giuRtrevd)lHDaGdA3kz zmVO^-sx#9vOOSc!&|s<237XyPWK~E2c;ZfHrDQqBW;h{W=hwmFiH8*vJuPl_L>*62 zd1lWM)i9B4c?$)J2OS-GEl*aQ^Qy!XPyK06CWsa1De{`fBVDfpTPlz>wdE@B9LX6T zo0JimPH`y|@Ph(~?Clrmi_**^m5!)N-qtp#y!|BedD7C6QNOLPsZn`T(ao9@tC>T*X0($_vZ;kL}=6q9jk~hH}Vejgm_FA0)nc;8W1# zMV-VjSH$2MP)7`@9;P40bBIKQ2SgoN+zV}u_Ssr$-ro| zhEvJ|%p))PG9{gY-hBU|Um}!DNag4Loc(jYS~!VshZ!K2xBB;RnV;hIc%1W9`;TBb zlh^w90h|Id^rQ)Volmjlwf;TQnhaxSF_cFM;TW6Wo`jy?WpA_ zwB>TU7Fp71M=jHMTSm9*1Y6Q7OVFu~ptjpITTVJ@F{e9XI*td~QqoNeDZQnnPRMaQ z*p`uQTEv--h>qhdOG32w$KOuo zU+vPfRH>7VV5cAtN})YlO>g`=OI)%{_p9L2Daa#Foq}%y@D!tS6^8y0XV?aclgYC_ zd8pXtGQ*Hkwzxdtq(^!jcBoSg{gxAWHDnp5YyCMD7z1yo85}rcmzAD54=)`8N7F^7 z&cm0PE)C?6Y3=akoYlfpL(H1k4qw4_5I9xW)R*hy2sL4jXPX+;@Rckpc&DY{v;gCg zN;UjY)7{);Zo?nORTubo+_CPW=gFFX6=&J>!1+PQwOTR!`2s}0Q!wKkrA{~C1H=8M zXe7oHBK4ahVKw3yo~b{>7zGdd_-m)&U_9@OxX21nXj6C_rj{6r^xF%Q zzGkF)Fn=14jRiM1)yHs3h7nM~Xt-A8AH?Sj)mi(?pRr6r)mXu1@|c+!Y!(ROR17?tQKFD2rBCsQiAi zYT|ZmR`~;sK|2_w{pBxNY!6!y3_gY!GvyuIN9$d z8kYe=sv?6lmg^SFd9vZgu5W~f{#aE#`q2F8#>2wR3Tg$bZ*0cq$NX9H%5ub7p12;8 z=vrI0u^zq`ws4Qs(Y;jM&opxKAM#DEF_WBIy}RlBe8|T-rMgLm>K|CDu{uo{f=+Aw@?3(VU_&h3uNt2u*z8;cv{i%r~)X7 zDu0*3;>#0^x_yuW%$XMQQsrMR<24>^G`X2XD*rlzg_j2%MK<}v*$)Su`8NmZiCI53F z^4pdBL-*){Ckd+^MF9Es_^J&1$_sk*-j~ z7K=NNx4PWXf2v_i<;`U4jln0>9(Jd)b^xu<~?(5@J#2|&ClAm{F!8ew;Q6IN4Lice%;&k<#Bwc5EcB*XjuaN2ymeT#9NATR z1!dR}VdAOWc&5g1c#|4dCUHH$e#-{NEZS8VI!JoxiT^y?51)`8f0guzg;7X`mHQYl zY^Hju{W2s%&wYN5D3!x51hwnN^GhO#foy$gLj3@mX_*;X1IE`soQu$4S$d~vn_ zTO}kkPYmlI0jvabt#H^i^5RSDg?>9a3Vl&%2!`F{IqNj$vAf=8codr$l#T%saiy{xtK5HqYlweiH5~E(6c_>=T zD-Er=R$}>S7C$^Ot!1&+W32bb$a@}ha-w3c$28Vio=y@^JOrgZN$+Duy4fm`GsP2+ zNVSy4Oqc`33y)953u6Zd8+zRCknUQISNK zPQepVxHGvyEGx(}zFEPQ@|OpRvVvd9Umn}d3i2#ZmW0fbK%Iizvz`^?>55L~U;613 zTxDp97_?H^jvx0^4m+rH~PnPMEhZxbHugAC2#ws=H zrJ1|Y2`^cNk)tu{O#uJxGF-E4lu(&MjxpXCb}8O8men@Ygyr)PKJ0%1AF8s?YNX2~ zj#Pq`qY>Pg%;&Bu9BRfmtzZSdB~>1RqPQH*62@A`T#Z1+Y!YE_cTr@tnX8qPVnio1$+3WeCulHb@PH z5hRt#SDg=)1pzhcBX;ANd?QYUlhmlUI4{oh?LsL+1#VXUVZZnl%2DH?_*&+da@2(1 zYX}2feE2{j$)fy?b3hV=L;1E?xUn=GT_HtF`C}|SIe5X(M=N4w7@zr@NZHqPD@HTy zZ>CG`Y|`jhP9S^Xl!VM)Ro0Bsw3G+tj7K2jvoO9AMsFq4+GBY0l){e)oO!tgu!aC< z85JAC6`OGAqzx%1ioYb~Ll=s*fHhbK)Idhbx1|j@eWw2$gu1{I$Sj~f9-Tq1x0)U) z3TmiDRZJ+jLy!VS;0hdWgwg4kSa5w*Rg;q6Re%NWP++aM@ub*|ks*wa>S;NJiMVS+8Ca%n<3vjZGaaRy1eU*OKhlIsnZ{Yd>D*Q6sgE(8;MO1N@H84 zRkuMBjfe%O+aHxlS9K0rWV>}y!O{7wZvVLw11H_wy5H)iw(3~7+vq|a@3>YTn{0XYEjOo0&)J^bW*HAdRD(Iv@{q*&NE ze!*z~#xHCf4IzWY(LDFZw$0tvPT(u-f;C0S5Qw`F`~eF>ZNT7h1(YkO(LAM>2r$`v z>tF-~<10J7>RiHwRW<5OStG=cNfXql4~HLZwus}4)TnpafJyr}MUDC+*B5sf6Huu+ zPZ^ibC)po_nIzZQ#@ssSI1CFTjn-%7p)%Om%;c1BXjBZK@;H-)lE%75HRd)t@3h~u z+g5q@+uQk@ngV3dBQL1Dam*dWdBS%07mN^%Lb%b47VkL9r+= zDwxNKxW8b&C@(5lAj*ph7IHrAFIXhXiwYKt@}hzzqP(b}l+#^*!7@&5^U!@%a7H?I zK4qiM13kFokWAj{$-vm<9BoqVDgn^>;{fC{~7mIkH&Wz zpIxQYl3M75nX{p(Zj+QD-`XG02?e`?ng5n-DQgZNf|aJSSZPJA@*R=03pK!SyBBZ8 zLP%o-D;vrelGi`}bgsd0E1Jr=NM!~sV|140VPNGeJrW{q2f1_)#&I`;X)(SAU_VaL zgmNqk`HJadcf1cBb}HXIWWOo81!47@v3&Cf`_0*WbDklDBl${`y+vm=-8YO$a_~3& z(+6P=9)myU8;kHa)1TYpgmU`o6yz?>tl&s=^w`#P6rbtRDaeBxS;4{L&U27i;?gO| zs?{mTMlF*)@+^7G3UauRB`>prf0aQ0xzb#6Vtcj^!kh@3oA{bz<=7BJ{a-BNQMh6i z8$mKTT*TTqa%VECITVdd#sDT<4W%4fl}}k+tfYKV`MBcZiK6|vSe=I9aca*{TWopW zu@EVA0kr@*hvbTIf*;${!qEtJfQdF$?q#FyiIPY$bSGjXNU?epNp&3lZM|?W1D9UtEhT+cx(BoCO3Um)D}i#(_QRy*J_ zwB$&C{@cEheZ7B_ug7)R`~p*ugSxsDrLG_o^BStvP^AXkk;~+FfUL1%1^xr&(}?dK4sCopgG246Q29QfU*FETLpfrX=J62D`IPSyHYL8Dp=G^( zsVNRLDTd;f1Mye_Uw?mEg3q)ab>sR)Z+1F6AKvb`%Vfa!CHr^Z&eCP?ny450wctZ_ z3#xqIb2{SR`QY|VoSXXmhW>s3_D!6h`Z5g-efRbeoO~?D`nvLUHyv+>Bfb=EnpMLc zd%oUg*jwR@O?l2d#n;b#bMyA%JI>b8JKoTOT!RRW2zhBjbYZjL^VqP)M6zl5kBamiR1Sc9?jPUQ=vHg(q&(Yjtktm0}?E0Y& zDKW+3EBuqS3Z}KJRb=Vkf3SZ0)f^7Ozs2uUPS=oGJ{=un7hT`HF`+={wSY!UU^&D_ znK%$Fjb0k?UBY3!Z)eU>z5CdAx&FOjD8AW6W2IOj^NEhH3u8Ass+5>*v^H~!&^o*cfAdYm zb+%M=eII5Dk=fd8Ab~bpm1ZDgTUJ9O38$*`yOh4c%Z)*=lt|Q;EKvIW{(o5y*iiz_B*K3pPNh z39uipiSU&Y8R@(K(QE{k)0=N+jq1-4`rG&+)xxjFa_Q7WE66%GmP5l|n^@CqtiHEeSR>=GMv??rsz%n` zhQr%|Fm{=7I>k#2Vzg3t=CXV?;l1_GDLizYLR=OcRbOr3oA#+!V(|Toc}ot>oil1w z;e_1D1>+0G<&LS1HPwX=s;G~Ki|~V=HV>++$JT_h+%eTEWA4;-rO|qf1Zy!Mt6qnY z>y~SM(v8s4gw44X;l_0<4q3ctU1PLDKg?>XjMT5Q7nWAxdw)232=09^sAygKJQG+_+dyU5lR#q%eR9~T|Bjz>=_$0XrUJBqBBqnUXE18pd;Qa#iU@8Z$Yjn?yr zm(Hdlys}0NG%>3|EJP)bsWp*bMl97=e4b&t+bSHzGnF9bW-NZ~5b)f0B$6@X%$v~I zPv*o(gUYy=E~+#s1rUPu@z6{`2~jLJ=EK~sx7 zb`Vs@Hej`UY6dzV7>zB-JzT`T4cM*UI^1f}w&iYCEWVcj`d5S>1ku&-JxtfT(vrGx zJjJfBz)V%rMdN=5?4K<0P5ejFle{ItJf!&=49wTV=m_+FpBep3dJ!l@1S-mK00rBk zkn(o}^)Vt#u1d=Hp2hTeK0SD*4+dLK*7oUyaT$z@VEA_|k*}ngK#V}7QD*`=q&HBH zw*h}UIduMJu=c&4mi#Q06+^^S~PO$L1m;7 z4G2|i9M~B>2#lnW>OF$l`+w~K=5D!q=I*%wz1#ve#eSTr^G$l_Q)XR-cbrmsaSgw%fxg`n7h%;H{%F-h^ zkjgO|dHN6(sG;4uTCtFfmquVjC2MCaJpy!xI-TS+VIx>v%c9V}8p6g-9y_(v9+#|u zzRn4u;^GxkLTZ;S%?k9P2LC86&DQ^sG)Q$V&8(0bnQf&FM`Z^8n9>~6QPME-6LJ5P z%_Ieie@rImp-rc-w#)@aY;s8bXfsKvm8#L_NY=np(qy6zSL^CiRCSKhkL-rzlJdkq zs^B$tVCSWWFLxK|0*krMgpj%$;E%!R;mIV94+}121mqLI-q&jq)Hd-XCt510bo+Ey zY8;F+0CE~)UC#?TvxZ!nUX0i>LY+Cr5lF5Rz;kX(E|s+}qjYt840zT7 z@Rqaz^+eMs%7I#O7@amU$<(6W(;j4GtMN;qUSuOnzG~zr+K0T&l>G0&HhNf+6JO`5 zD-OSJClfXiEeAt&5*DclIzIo`UKTS#kAUX&R;cv!U-NyHHXmz)Nj9=42D~sj-|ZgH z&GSQhcubm|px7Nxu8_Q^OD@at`g>1?2MMiitCob+ag3U2Ddf{gJSkp0mny#9KWb627jrOgWX2_Y;0 zdn+{+#%Xok9Fx-KV3L^>X950ln}X?PQuO2O%Dl>PZ}VPn#Q6lUUs=$4A<6$AuEU(2 zp5XdgHDvZ|N_j{hXpn$$(ne`?^D4r=ihNK%e3FDQMHbwOG)1<6Mc@kox{JV4DEvii{%X<$ zo>XBavt-~u0sD;&-MvBzTr5rO2@Hv1sXMgJesif zy0u<%)CBjmlRz0S0Q>bge3kVFmcob9gDxE3xB(vnH-&JAaTS)aa1dhbK-?1rW7hbk z%+Z(9O?G=p-^|lr0{C2lORdjZ%SE1#(i0u`fHsDsSVh8wT6nIaP+QN)g8KOGV;@uxu^^)r&{Q1 z0ec6bnG{-Rfu50`%oK=N$oo zk4aBps0EgZnI8B)0nisMi49pb@eBGXX`|b7k3o63SQJK=4n6k}>~qq_Hs>B&fqJ5i ztmhtryen6%i*`nN;9^a(01{_YSbZ5lEp{V~bIjIX!qCi?*&4CR#IS*xyXss}s zdJxD@+vvIm^<*4P8`CxOSDidYafNPO0XU1XV?sSl|UFaw2wg| zVbz(xfZ#iu#98;%bw=p6wvW!KGo>T2^as=2mLU2j@2&_7@ z&jHwS1EXW%sxv}zPy0wx)|nk(z079T?ewi2!~ZQ!(nuW!!m;8uK0zV_u?$(vX^JeL z?3<6K4@M_|OmCf3$P$63bV{od6aJfFiRiu@<#YHZJ*F zOPfPRLL)1Tt0?HMO%kD^BZ#be`b*GU+mg!N!3pV6?Id+->yKdTH7YK0_J8bWRAsH2gcRTNl8i^E(mw5-P}$abOK0sB_Vb- zM8bJiM{w$<=xfk*8P_tddV(ix*R-3>YLUu8baWCjSF5AXx80 zD4W`u>*lm>eGFDo#0{h3Ld#V_()G;uLDdueS(#baUeQGAQb=4q+7CLQm6#!CtCt%n_^xM5uZpRri^^~$Lxhl|7T*N zAz_aziFn9F%=%yw6Hz7({9{TN`QJ&`%EUp${TiZnnPiD;3u(vT>lKp|0JPxTGHG%Nc&)V zw6Zr*uLRmX`ijZ;>Ib6>gG1C^Z$5sWOlf?=m|$)_#(+f6@rU$cHG!dvmvati44HzNFpQ23lT>w=Q*tWfy)V03Y^N4?4~Jk#67BUM8R zXFV9U+bmAq&@7AF#eyCA!tpBbKd?F2w3sQjgt@aOO^%6C$sTu-O`oRJBA6CQCPYWK zkH}RHt_H^gHjkZX?pU4CelneSIn#0U3r5Gu=2Cu%(`D_Wv2v&h1Si`ht{jT4K@Q!J zCQ0FV<`BNrM;l|I`YQct#w-&bgY6re(N(&I@r4dzbmiIVgOsX;Nk~UC&xG}@4rJAt z_aX@2X-TU5!uNRx@maYzZ3eDifYDKO7#XvGfU(JP(DmpyNn&7VZGwl`T1yU+89c44svOKY%EErWHX~4sKhG z94t+jY_h8!*44Mj#zrunXtTPqQCJ&0kkyr!pMdZOo78UC%=#$I$9FKZ&d{=1P(Kcn zP>7UYIM3@qPAgYm1=|NUqbpZeGgtSd%Q(rYmq{{p{%kCL!suwaGF3>Q?l@9co<0n| z-`kvtc`C%Ob}X^Z(g|~*{{W^%mI~#E9Y<;9=rtg_$0l@gv^(?{;asoE_&QC_Ng9C1 zkf2ph8QtbW0}70enKPa6_gjae6U<7lg`I324$}*7JRfFk15NRls%ZpLrVG`0%D5beE+Z-X^*lad@ zjuI-AkqBM2LKoG00e@w_3AC1)UU>aaE81T8D!IlNd84(yJbSjI_2uCC(E3t;vvRb) z(8Y_^m$?yq8jn-^GB-lKFZi28@ypx@suK?XJTXtHS73biqY@e9GEQT4I!4sYq}2Sf zw}hhor2q^ru1Cpb>13JmZ?LcJobg#tXcM}k7CsNa*-))}!`kht{EAvzeu0Wh zmy`@GRJr^a_@Bmecv0n&k|c>XmwAhzLKnu&?hLfWskOPJB4ANE*9Rx;Lyy$dk8{1av5&>?^!Zw9(TdhkruSMuh z!^>Xt{2e@fmtrIgqYJbrB`>LX67;;V>>dU5Gb{!v5c(UcCp|BzxLQ;7@+rtvsTn0r zNI5jCCsi-0SmU(45O)ozHnybmrtKvaQ=-Bb6hodD`7OBqVDp99?ReGrl8Vhy`Z70C zx^Qk}n>u(I5^W8eAd={+>{abcTTEK>i^X(95+*OYUsAES)xRJ%NWAXLt@ucBkfy?m z0+>`REwqo!jkNLY+^qy=w=GeS0~P-9qy(m8C1P&tkI?v%KVgNHNF3@J{NqUz%wCFQ zYJ=Hhvq?GQA5Yp~_L5Cv2$e8BR$7sh5-oMdi%OW3bV;=tLaJ3@q}CGCHaNdY-vi)Z+u)MV8a%b4 z7%$+Kwv)cAlo|u$6eV47WooU-QtOKGM26Fu$Ajd;Bt%j}G*N1GG2V#GZ21CAnHVxB zMoS8?D{iSZ#+m&~YT;p6LmFgj}U zZbe(|O25=fWZGZ`gRSI+-y%=2X;^vPG^zE-v_a!iCG!RtKCxMtf+mXxRWhkqv^JSZ zYq9nOBT405n@lQTTcOO4l=UKj@39CBY2mymlxc&26;lcRH^j!8zRqju@VzLNX#?Lv zKNQI8ZFCt>dQmLX2D(%Yk^UZF|Jufv>fuGVOdI&ERS%tF`A1;k7{;j`p7hJ4; zxZjKRnN-*=1vHW}2b5th0b^DmZwhEq5!gCt1pZV&pXI=N(m|67-BLp%Z zn}A_-9(&PDlM3FgoaQ*7o=Ifq8;CdMG^q$2{WR|Z`a=sIy^|;XG%2CuRMgA}*y2k?6ON?H$)U*ly7lQu_z&{b(NpmlXYEpq~jWQzo@+x$F zFp?%(bPu{}+6EWVZv*gy1b0ODqOK+tx~*462y&{S{{_bET}2g68yagoflJcV0=SXj zdO+hrX-z6@OTCQ9{VZT#a^&`+x5f*$h`s*?rAES-VvCxV)T(PzLEGAEWGH_eaL**R zWT>9#2tjJ?HEj?$6P-T;`%@cVPjm!7wFa9u@U4l?jEGVtFj{&&(Gm32T5Q@tPdyR2 z6MT=@oSdecs!URAvPs1mugpgBrSC?ihQhe>#e*^%&n(z2rSl&g7sT=Cewf{k8L!m( zY`ieaf|Ta_2e{NGD_-_`lu4CZr;S%C&9nwA;W#FfB(+`}FC_eGBdPZ&@L#eyq^s72 zP_inuZW}K|sY~MY8ch9QbQzJ7=taLxDq@$48xGK}0QwC!gN~Z0AW5y`CKW@xnj1;Q zj9Q#&f^nC1VM(p##tVzHW)T5F%qG!m7DAF*(~TDrSzWU#)bGLZk(Bg%ZZp z%5JJHI_$rL(TV4(P(qbj;f+@+UD$5|%e`?-o|N8rA+ak|_j>I4fzh#XRVax~ zYQ;BRh*DRmv%q|@&90kvQ9_bh`Ate*P6?S}JIUci15QUs z1q?X_oa`_w7Os`?7$khzmQn!aby7$(F>13?(_ma>LyuQHXu|Q%W!2+L zz;stjHh1snK^cxGURQ1I9>qnmFs?YdshoJb{rjcm# zk0%8=9%#JAS~o1w81^Q^IC1u*B&P%A;IVyaDt>?%*-dUy4Ca9+MLDVDiPM!+4uTC9 zi6>n-si19D6xJ~Z$>84r|4$Z&(?pmbjzo<~YIQk#Lus{8)0(l#3&zz}NYP3ha|nHE zjX56aT@BU!AbuqYxvRAj-qc!i_JUWpS7Wze!3QQW&ZIT-Hnrv)kBoM+btT9iOhV{t zyCj~ewdZ(Z^;(T>4LVZvW^IMmQy8Z@OC53-z0?|XI$Ac-q9dZc4YB^6M6|>*l3I(- z&mf;JOTXBL4}LI-Dd#FnsWs_zv}AUn>vI(DtAUXPH1+C;gopnEYke?@X()xymBp#`>U6Y(TDJ~RE#*2QYv5?i zdSDV|l}?g>%+yS+T&JUDH5KfLgx5j3$CF4X^Ai3sB}}bgr^6*|ZC)ZWuRR8;4`Fnw z+L9VFLGhwxCzZI#6z!O+La&1JGn-fHtn){PmtHjOq$E#Nw!>|ajPsIXG1h_6QFd6J z7T1fmomA9u3U@5pr$PA#o7N%org0|~ovCyOMBDV2uyNb5{|iQc-H_(Sj;1%QJ1Oa0 zigzvr%Qa+@m2sx7SH(N27;N1;l1e`UKjSzvHp-jsomA+S`W*pZ3*a&v+>`p9RM;&w z@bFBZ@i-Wsaag=);7P?Yfv4P|gvZJ8yyJ166GrE_UAXj@Ev>hv4J|xv^XU~lUBb=< z*B+bC9!z^v#M3sF9z#o+{T?h`PiPS{lc^15JZ&?vb_!1=IAS&rTOc#>yeQ;J#S^cS zN4S0moyJSp15lf#i$xDV1wxO5DE1^!uo5A&POFrdEH;)G@JHz^% zgj0_&I%2L26Fo9*=;ujA)QXB8$+fgZjADhvYsb19eq-2a&pyO`Kjyy%FIv8D$TzTq6 zW6xf2y0i2Z@O^A^CT6J@tv!27taEh1saOtyNoWncY3|tzN;^Xz0@?F6p({g0vrHS> zdr}g%uE0lX>V(s<2m;e0SB1C@1wMOA?9SR-K>CDDoS3!3-i8vNwAgk2jyxUrpTe}r zU*T;-k(U70MpX4+8ZlajSneLj-Meb0dI2ACFkEWB;#^Vv&YcNXse z=QTEOVipT|8#;Z`A=f$F^-QG(z_iF=p>0F2&tB5n8GJklciN;*27A@*lZw}+-skU! zV66NZcz&?CB%k@mR20*OdY@E8$u#_|`6c#0z&Ityn}#1xJl5*BXxw=UEN|LOcC^eT zNH0o$_J$KPL1CSGmQshq==jC6I!o|ooZHazO=CC|+tv_PM$Uqsp-`kT6se1atHaUhuxG&a#UAHCDXCUklk@T+4M(7+DAiMZ zMaycm#)GoD*!1%H`kK+Xf{1Xviuc`t6YkArHBDjFYu=x61ieRY2nrxVWOZ92;|sA@!p$Pr>*;1f?3@ z4M)a$Ep0P+jT!oThD026=x(8v4RVlvQz&HKz=*SgOq*7dA{K25OG@PKY$hgrPDAz+YEaY3j9xNwX{z;*w26S$R!3 zR2hzyMQR#Vul>5jxo?TYHaIUMUFN>M8bz$nqMJck!{5YGrgeyk}K?bW2&Z zGVw*I%eh$Oco{*F+vSnUNHkm#i`3Vl^d~@6OrXz?w9jZ+U1fc3sH~zQ+=yxwPgZ>- zeG-^QVG#fFrfRiM(by2;*03!^O$XB@JfdS|6D6(FG^6x9Y&x?rrZ;Y=kH&IQ zQF0~0Mvmt5$Qi2B!G zwOBi!5bNBJ#5&Ip-EA5Bp1;3X7t9sw!gXR@R4dlSyT!WXw_;uTH?c0;Zy>|%nj+Q} zE5y38QLNqPiM8iWv95kYtm}Rd>&Co640rQ9v2Lvv>-JN`y5mN%?tE6PyFL=@?!aIM zxM!$X_s$mUzNlFDpDES@w~6)Ot71L$jaUyKkjrq793s|Z8^wD3G_jtzR;(wV6YHtZ z#Cp2N5C-^7zF5yJ7VFu~Vm)`ESigNxtmpqA)(c;V^-RrXN#lyE^h@yYhJ0KdQsIG5W_Bl^n7qh zpC=mp`>tsP!c@?2Lu^O_(MK}9JUN1u>7^C8G=bbV+6YV!gT+Yod5Gm`V{(MTBHUH2 zOA>}W$j*pjpihXC4M5fB6J}#WE1?S!8V#rnL|7IS%jqyuOS$W_oYb+_0*5!d14pbP zxRK#Wt|h1q*H@{&Ta$x~$4hj|q@71Cv*P#Y~g2b*+V!2FD3|UVK>H;zU~s z>}qlZLAN=7BE)3U%O6*pb4)8ZPNRdE(|_;FObD~pIi;0=RU;(~?!6i9$8+1pj!Q&gDjaIq* z!s6FL=tk(CR#41Vh{R4S^gt_~UCq!&kySIOgF~V4){1Zg$I+n%Xld?0;nm$r9dG=0 zEwq*PU-}#T$bmvV$5VazMhv@E|79girxV0u{}sBv|0*2A?q`2xt!(P4Nnvd$g1E?O# zr(T%h@{h3^h({7t3g<}%rj%RDT!mX!r21dt4Yz1qvf!u&8<|m$*)%FMg4&L->LJxJVqoyj!fV`iy3{f4v~TzW#?;{~k}rLFH5W z)2g_h@f#FgE{;_Zv8qoHYr`dCMeY=9&#lQ&N@b{b1oEX$K7J>d{eA*zZL6&f#Vqb!8u|*R4vxSCyVvS?Xbq$h0|I& zkR@W^#V#85TQ$A`U z$^N1ZI7i)x?$H^weURqHTZpLY6Jf%A+Xlw?$&DBkRp6qVIo353-?QGv%FeMsp4o9&JY^|wI4~44hn$U-AojNrXs;iIIx|U|8 zz}O3*Qkd9ZY%MIDI<>s4F(TLPMe3@>Un|!fB){TdMy~v)(vSyBu|J0-6C!nySfs25 zQ~YSCCej!)8~B{TV-LC!DM|JHgD1&dFth%Nq#ZoCz?lt`t!3R&Knd;_KiFuwWRaQ+|Q7z9&&1z>hcfM#Vh zBk0jqaJ53z{S2OmP#k0=Q!Zow(cxc}UvUd#}v+;1`r>3wPIOec4 zaPpZpVSr|?XJys|Z^0n#(QlDp@q;u-p+{-A1Lj^B-<^~{Zj`3|=waIH@bbRpO>2IP z8>Ydpo=JRfd9uc76fceDjxq4s1k-OT&9Eed`OfZ|rHPX_={Ls=-gcARZpo52&my}* z6aCR`b`vdId(0+!w0STRzU@{T;jCtwG{#y4Eo1O5pl`F8Mrga87Ev!n&@1iWZMD+~ZZ^~s_;mz) z#}3Sfnhh%EWDx9Bqeg}m_)?wmW552l<14nlBMJQ}KjG3{^O+BsVwU5p~ZJ7bvmfEAN{hm55l;!SU$01CfyQJ3kIF_ zZm9T=zmq~x%`O6Veiq|Oe(rTdPW<@WW><(r!oW%f_!W0Ky&#`6k3p=gUXb4ktzMAn z(vF@lNym37m^$Byl6v}lr2C!t<)!0m3B-PnSgYf(jB5$#q2B{w%We<7-gPz{!A<$v z?)4~NLZ`>5eM+=*5K%9k9x(Q<&ts-7M($|_tIuP8N}tCE_o4*zAD2?q{0r_STUV)?Q9I*QdZbQq>C_0bS! z3SrjX7QK&ISo;PR6h4R*ot+qN_6;oi=^pIvka%%C-54vwx&FXPy2`3Hj?qLKH>kj& zbP38jH}2-GuY%9|Xjyew1rFnzoZf^BaQzn}-y*jxB@s+TSvG9fNNq!ni~{bt8@E5f z`2NheYKV1v1EI%4-vgpEgb*0xQwOVTZ?I&Qa~@!p+fe@`6c@|6CK-|&%>&h*F%e-` zNKC--Y3({--)ZB2L;R{^t<++=D9`XR?)l2XGK)eFt|A1MzMO@{H0%S@7oF=BwZP(@ zD4>~L?$sG9WPxk*k#?#F7bXG?ECrbp@qYLR%*@7AqVVeiZ&J57xJHMC%pVY=Gl8%Z z#^*0V^fcBMU~x`lmjRYiyJWNi#+-ZuK<^T)n}G4|_rNbwg0;BdoiQ4G9~Qx3G)(V5 z66V+x@sr}Y5&_mQkVHfWIzDwET_Ddwpo^`5xMPHcTPV#{?WCyy%5CZygnGpeDW5%c z$kS5uQojw>Bs$%XRSy`ESbw{8v7eP1Ln^?0gkE7INCnUWaOu3Y420-Qxn<*I1l(Z< z?(f7~-(HwJ_szgM0?#1y>v0G=`R3b|gat%SzeJVY~jiPR$~E5(n`zVEMlp^?WrJnqnqQoxD*}Z-GF<_h9rr`T@J7M-ZZC` zeIOM!@9c{Y0HOW8(8>>jaS8+WxnXZ82O~~zmiZlO{e))eJ5qNWZ!G^kR*wU3Fj-+S zF<=ct?SjP$4~tc`gow(Q&Be{YCuB1+&ww1+(l-57;we`+20ncY?UcU4G4S^f<(ca~ zfzMvcp*yc_41BRq4?f4}{*P6VKwsM!_~#??%=Mtam$Dv|`2|U&Df<_jG9yzxg#Dls z=)oS`ClXa$_2N&4TgevcOIk|J_>iuZyWs5C2D5VT@5u!2MbaXx32U284RR z4oQ)9a4qME6v26Q1wV9siqPs|Q(i+53L$_S=8)E40Ku(Q1qgni4KbPGYyQ=(1(f=2 zR3Xe}JKRA|xOJ_C6GBt)s}b^UJ2Y9{GFP<*L247>BZU69jX-`k!uHk>k}k%{eHl#8 zX^$wi5JvLf82E~nBSVhWr9}nqND8bM9=0LmNmgjx(8%Z2th=PfCX_h+X%<;9hqB*; zaKE;~8j=li|3Sc9JZ~9TvO&WB6XCwM!%9}@u4n0Pr0fl-Z&$QwWStif2!{A7hp3 z{ut&5FuG3rxwIOX&TtrnBnV;$e4YX4BhV5CEMei6YY+m(NeRtqy3ieq5GUDmI@FTn zbY?Iiy9YrYvdQG`g21YzWX`1rA5hBA5$InwpANV_IiC~qb%s3P*H8xtqvI#H4g?}e zDXq&2gfN64VFr^nQU{YAT`kko3MX_IA<($wOMJOHxrDK%mF$fPT)416L&v=S+v2m4y8o;r?rf6>awcb4OJ|A-C1# zD`VsnN=<~(HJvz0hkTl>EvkndQfhiN0&a;5Y_RXqy6^)ZCPhf1=l)he+-<>VJ@XcSj1Jm&?U4|CRPmEQ;QYFn8K~X1HCg5Sjr`#9Y|; z5P?3m2}MV9;HIQ}F8#|=ZwLPds^4LBPUu%1@f=n=VO&vS zywnicbr^UtDVMd&kTa(Z2;67`a3rqGdrkuHB@OJ{VR99M-CzY(Y|yJBH8_}OZ-hXj z9!OSL3we)dg5P2pdHcQrUgzIh@o{p8=#}BBvZfjw9&{1ROiED1o8Vh|XWy|J;1zKM zipvusO_|);sGT41M7YpPv-4XoLtGlRzPL_HtD=Wx;HZ^Jhc|OvCxUN z|MQsj!syJG@{l~ma1fN+DY8Z;AJ1^P#Y!#hl__-skk7Kw39RsGE7Z6l8mZe9!hxKs z2%@zvIV5*P$N5BG!TqPcH-PxAg(`r$nG8j7)L3O5*m^3t{CRCt&1TNG_yrvGgmKjp zY33Lo45(_#D#HADr~8ct(NZ{;D2Isu;7{;*K`C2KZp|3H}@r_R>HXIhj0~K&Vkf- z$rFXuoJU_mx;2o6VDw?h5542FvAPiq585oUhV#fC#7MJbbV?Q_DN&wTaI{|KysT6% zjE;-24BKf|No!>{gk#Uizc$ZMfxjkg&9Q^qSwyzO^AmG1mvr$B96b#Sf$vg~-v%RJ zm-%5?OCk-9{he8Q0iAI2H9qmH_Y9S_Px2bhtCAN77Vw17@xq~cx|KQjo`68FQz+|myiO-a zs6U*IY#X96lL-<`+M=4vOXP0Wn-fsVjj>oWJ{YDoGG~Fjn0q+ovuNfdWanP)B*LfG z_)SD@uCH@PP#P@ORv?e~&QQSIbSWROj|d%Bq;lu2%bhm?t85uVmaoCECS%Bo%Xlbq z$Vxf*K4je{aSWd+)`pwJiaZ5tLEcaw11|8tok6>&wb|9$7R_Ud*h^w`x${N5?s3H$ zrMldEGwQs2t?Y6iw>Z-33q|QdLu57UOnWNdzNjUt>Lx>P!V9{fxu#OSFh!TcP#c zgj-qUm^e-(nA>6#6p`55WfK{=Pb6p6^8j6IQXGE2#Xt=ND;m^CDC$DRD49~0MWJ<~ zHXMsoSaQxczQgOu6xJn}j#EQDBIBq;nQV-I&56>1Mm~Odi&6ruJ63KE9jPk;Ye(uV zi^Gf*V=R%P)Gf1=g~O~XEFzEm1HoOHri;iE+|{d#$de~oMTBn2@wiXTjXC!Z$uPMM z&BVMEk5WA7);gvx#OK;*?n2DXt!5!U-$J9C%CodkNGEBj%1A89w!(`oXz$T~Vh@w8 zUL#Z{8ZWdGieNTm zqH%WKabFj@6ij=_QwttRBU!`XA4bjbouqAU1r?noV6hv5mGLPH)^73D?3O#bT7X;W z)g8MOkX%z*24U0B2#C%PC%NXm?rQ#9-THNC2&XNZ%jzn^NtkQu>#B3*kF*@!Zlws= z4rhiS@z&zzkq{rd14!uP=t!wEJIi8%$yKc zhKf=Zq785CeIcrK3Q=Ndo}qFswhNTwPeuYx);|VPyHOUUD{3}272+^J(uAL(x|K_2 zWAC5kNf5a&VWQmuXe}NkD?`PF6M4EU91SBIwJHSE8UCL-Pjb*sRle!U7nf2PD?3^i zw@_J&A16qTN3jQVM6+M(U==m$FVz5_>#elx#%wq(xwV zFuu%CZvs@XKI@6XMHl&_@~or02OX5w`6rce&c0*~Z!W1odr|1tol#M&Ps^1rUx>D3 zvU%vLum~Nbedr1e3cC_6J(n)zl$qV_#qS_RFI$bB*BB~yo`!aO(gpv|+jRg|QDyBr zFOTpN0!Az}#V9QhAS59KLXnU>AQDI_uO{woim8B-v2VDU;?0x4D-+}HML<~ z))@a4Fl$n8@)6pzVEkKC7fFgq4F=s596@3vqho? z{z3hL`!;!hP7O4SeGmq`FFwqgTiVo!5#B++XdhCB=?lsuzM#Bm<7t-krcL0YVRBP& zopov~^cHej;WrKZEgO=HEKQBH!cU6n@H+hO5hAcsojMX zUJZ9k3dX!Ylh*g3^P5d;v(Vxjv1v7NN)>u*43@!8&Dcy-=0XH5q6X6E>$Ykz-(*c| zk3%u+&^zB^HBJSsi)?yQb`n*)b9X=On0Tdi?(+*X?}FCHq({N&-jN-SO5tnpSdlh$ zGzMGIQ|YM>oi{oBVva0W^bt;lo(!EFS$H}+tzBn8P9vww?RqdYa&P*)+;sqNXEV0% zC+Ns{ZV#`8ZyhuiMu6R4)~}4et6v#^ProbvzJ6EyL;V8zM|@=*V{@n4{e>`zjE1n;O^ zzTS)r-%Q4ZZxk0Cas`AhPCZ8z-hlg*p&#RK9!DHCoi7^i$Ob!V#$&wYfx=NU`TDS| z=0?r_08H#yyaKUBpW!xeC2tQ7D}mkFO_ly9!&NIkE~&`UI4|25<7C#;$|bj;eJ-E|(m(v^KX?t%BJ^zxNEE zj@sB}Zb6LwiW1?mcSmE7T;T5HoHkp%qcQdcbRMJDxFW~GhH)pwHtB34Ta9k$z!OF# z>StZmhPFU(ZATT|g>v*BTMA3ms20~GEMFJm=}D6q*czFn?6MghmQ*k zUZXnrdbrGGq_x`90<}MyY=l?8o0N1JW|c+`ZEt@F?Aw>S{Eo`U1gQ)Ar4@-y z0`vjg`#ys^cm&T`SOlvXg4u6-Vwxl4KoDGG3&E4tu)u=}?i|~;U5RUhP`=41 ztZ^%l|4Q`B1$YQ6WVh`H+|mxpOnCfj2fC{ir!KNaM81VUtzj~po^}- z|H@`Pd;1l=r2*)&COHwvXA|8~^qX1qlI>RX#!{>3$zNmIg5WIrRu+B!_A7d0y;bx- z1Nn5Khl;*~yspz%P8x0>rNfE5HukCPzKvuIbZH2>YZKcd$Gg6r(0mWNca_3AiZc9$ z@7P6Od?z>v-}+N%5SFbAdk}sMTORfx{I>jI4#F?;5BG!cg5He6bH2s9jtHKII3Bql zg%bzGFbt!QaW6n0w}6euiQa=@I6-(Bhwp}}7=_;{H5jq()PRlg?B$7CkoFI zSqi@^#+*G79EI=6h@2q4H6*huH!cAD#TE;CyN{!vV@M{a-HllG=?uBS(SVV)yZ(%c z-5ppbja(HnUab-1)zgeUL}I65Ju|Ywwqw0OJ5vnuwap#)=7-SlOoaYpap=oFu><7o zL_qE|LE>4$c<@0Sl8nlw^Cj57=nxARy0XHB4yX#|TpO~6oq+q4%zt9msI6i2OJ!Qa zF5#`VhSAxSX$?D^#~idZ>{#5owT8j1jX%0MjJ}#40TbH6lUs9`(2Qgc+v#5*bsD!` z_~Y6hMta>XSaJ#@A%j?CdWl=agxsJ;mSwS$EqmVZ``7fq#-(Jt(!?)CLGO7aK1i)@A2Kc)JUfo**^K*?5ltu6JHQ zGJNZWF7}KRsL2onO;JEd*4^FWK01#VAf)t-aYg5?6Mp;Ty>*HHd-$D-lBjD~= zmx+VR0&^I_clj@jfCwhI>jh>nu(`(cEI?b{2;B3CE!FORjoB;gdew}UYV`jDeKvxw z_8wY%6K6nHno{`F0DiW`Ko6|Gy}~vNpQ;SC3xc!o?iZVhb0F(Y(fLz=ejYiX&Km|a zu?OqT#2Jt!r-;A5VW`0fS_GN__e;)RaKKfkXyEBUzmOa_MBsYWnK%Qo@DvfG!`wLx z!6^dw3(sC~z_q7{;7p)jL=HkC=*ikMaTcuQC%b!NFb2rs2)YXti!jGYS$@hVMpMXa zjA7iZRd^c==4tSNWNp*RL3DdCAL1O$vz>$a$es=6n8x*PG+*sCR1<>dZye9ukLJAt zHZ8@U0{D9i+;~q$RQDUUy1*2|bK#joybsMQE&@!eaG zdj)P5|9t>|X@U3Lf}A)DGOCN_SNre|2!d$7@jNP}2cvp#bbuSXQUjj={X25NzQ^Ri z{jlB}7C5ep8m>w)R4am02(HKVUT`1-y9nV6p#MY;971qEu=j=qj_e|YhEzkXLvRS8 zCnI|=c(8_ccKybWVBuGbjnL~`j-j30b~pW6$0NJE#$${uScd`FJSce!EUxB3Nx6-F zP*M&u#yO=3NYgA!C&4hp(p@ty^t6l%JtP;<3$}Gg@ig40JP2+~vn(Aan+Di(=Gz9? zO}KSyfQ@N?<$JEhX%MOS9CmAeCCNzU*E30pNB{Ntf49dGx3Tp#BDutkuOzoEY_Akr zFHNr&i5Qkw>Kl!&W1(%f(UpF!?YA@>9zeSsao2g%3SUS!v@ieg6YlbMhk3$XoD!M# z)*D#i{kb!cHs?0pyE)-*nOh$KpN}GV?nX{m=2pvXHV)Go|3S{aJD9nRM}>q7YpZ2! zosO(?t?WH8wmNOC_38jHVH^)K8%gSEN}v@{?o6#tQgEnPM_Mm~&bv0PBZZa=Lu)rX zt1z|)Dl;2F1Z*rKeb;u@u4YzRS(`!YD4U)@kf=K=Yq*hBn0XMi9wR*p&Y`6#>@V>h z_b%s6-H&h?gH}R$`2+99-o8$es}#QTGu-gmk(8B6@j#%%J$>~{s`fL; zQ>6^%BX3`s3WPslEe!YRC*2e5_K0<*J!+rYR zj!5DBVR*V%BJ@5n5_zpVuUGcJQ7Vso!ZL*i*OPsN&QSQx*a#V<_r*(wO>nI~HNz?a zBKug8NY;R4CmFZk*L*>$Hdx)UO6@vz8q{XRu7wAm30XG#0)gs|`UZGJ2y|A-C%NRU zHk4FLk(y(Dl6&+BzVMj_SpCt+(X&{Jw2n~30!gqA5%{{}=rxpc+PWI~swDnCgn!R$ z!KWaDRkirSqkL#`^wq{zU?lsV#P7+5{jjPb$mjUBNe8~FyV4kapK<-JhC0Q_7`@e) zvWuaH@Eeg0K{fgj`Ffrjvd)Tl)Hol<|9ma!0c?RiCZ8lpAF>V~(XDCjKxK@6T%ram zo#1}Guo}`(gLm(1gLo+dG#@aiR9+p~(7@LuYFgCj2PN9a=+$r|L-dD?+X0rwsQOwp z`eEZy{5euGBA58282yCtDkA6S5~8905afDNKz&ATV|AdWqcwo-CpG#hiA*z)uDPj` z)!Tp%_F7y&tqWp3#oIrQhtKFDSq~fWvPdZBv+^**e5gi0XZ&f1p)!qJshJ!{%I78J zBpTO_R-{i1O?B4#t9p|J`gdC52j5%U?*ArUW2Lif@N}$!~ z2ID#?kQ!o>y;1bVr)CCp_CULtcl1rhdw|MruUb`B94IYO$)j&Gjv}#jWpJU{AqsH2 zL1jf$F?9xxMMmEtF&@U$1}h}dof73$Gc}#jcNvpGCfUbElfomY$-XW4MK83DtqE-+ zg?}ge*gs5TUqfY?%|_ElO(P4`6YK9UL4_Y2HUAzcTA`MWnZVjhuMO7J^D~0tmqU%2 zC~tVAx36yQXoF_9;SHn~H71*}zVubC%^fZ9d7{QlVnlj68z`$K(6*tm8lT7=lf(GI z>5RjB^Be5=T*halQ=hs3=J83UJm~^DnNKFklMrw|Bd4afG`Hacfbbi|epHQ_!r0mA zO+mbf6pAfi?0jLeuC=NLul=v8Z*Nm$rc$mI>0xox7`JbFOQ5C=FAW82g7}h=8dJ#F z#fXIz0@Wx^3!Im!G1D1cnU3!~Iup-e>=ML=C!WdZ{YV3>LdGFy3%yBF@{-{AO zm6=5)!M9iBEOq91K1xrA`H4LU}mnc0lUK-P{rxFlAY zllb?@^gw%KOI=e{BeF<+XR5ThrDcAVnRg3V+6iMvV@n`lw)D(cmAKSn6NO$Eb z^C>>EB3rE3zcDtuy-|(K+_%rfVQ5e7jgV=L%3R!s49MSj`&(sJ%HLi-hrYI|%q0@x zV?<+Z)drQhpG2fdL^E>iFMp@=?+rnW?wLy^VrNFIlN`$=Vz8u;h~*No8zbu5YTF>u z10*IxrJMvtXEs*D;{^J3JUBrfq~w8TUv+!)IfTZPUx#^=@1Higu+%PVQ=7k3IhF;D60?nRDMj5Ymm}c zx30bxm3N`An}qXpl2gd=9pw`b%XwGtz!eI^z`*wAEBK;rS?eUee{c&n#eH zVQ+=?R4tcyPN_0|^2pa%-O4X;W}edLV2DCqc$OdjWo$x52!#{U6vig|M6Af81$(Mw zdYa@#KwWZzcpLpysmx7M%1@Y(KOp2sIrv;CK~$#+sahe&^mMYIHt>h6*tf0*Rnu6lGEbM9xt5RFZ)u5(W*`knpn8Y&A%{;g ziOs5#r;RNtbC^{AXEuE@s-HGDG^os}^0?0)&LZf?E$BRU6VfC2v-RQJFz`-e6}JjS@*Q4tmJGjhsp&7%r(#wy4R2CMjWtuyK=3M@W#EnTF-uQws8m zm0MScBMpnQm(clF6gnbtG=?*TkG(QbXc4*GIU57v$+gH}w4|QP)WQ~j)F3=gbjvyIGeyk{ftQ(<|{ zZdM3%AkBAP&X2x{l4gBfYop4XBBj`IPbZ3DNw2*binvkaJC-Tf_8@@9U}Fs>f37@P z$S1Z0th`J^$)6{sSR0W(($KD`GB1!s=SEA^7KE~&Eottt(?|~_j1IC}+!AS0uUQPC z!?v3KP~Xjn zAkjsAI6eM3LZVdPzURPupzk33CY!%HrU@~p8kn#)aOs)Z)X~s@73)}8x=zJ_KW@Y- z(3FL%{5g`g0=l%_HM9i?c&4h9ZkB4tZP? zvM#X`nGt>_816~uR9HA0?v;B1PvN=aRNs9UP-~vVFN_ZIt7G28{b`0T*;juNA3c64 zlkvAuVp7fc#qi>g>{}|ohlAkh1{4u}ORCIyl6~~fk?Q;AL#EQd^!t$NTlp6l$?LF= z0OMJ!$#}}u$i4s_glV`KQ^B75ZA9v6Bd0Iw3`0MqNkEO+mutUiTvz;xWUZWp9{6Ds_Ywx zO}m}QqpEdPjmjP(W*BE=r^?>l_!3!@ec#J3QS1ckkPRvJG}1Deg59k3EZEdp--;Df z_87@-MX$5t$4e$FzGW3YtOBlb4Z>Kl>#XPk!%4fj4Nk$^>D>zAG)@p~wqz??b6Y1I zVq_P|BP$ZdL5ZE)HMX&8O*2w2=oVj(Z2*;BA@ObL+4p)18cd1Px6BY-o%ed!qSO$n zPyGi>KUP9y`U33j6sT&fZa9Q%;z{}B)Q1J&dMq}wPm&h5FX$OhLuL4&xlU!DYH%X7 zn$gl28C|ck&ydtdg+({0>@y82#JQp9>Nc!ZYgVi5b46btS4i7Y^6p_ll%AoE}WHfn`AFiP| zby@w;n(|=zO^(%DP-~Uu-?$12H>h zT_F$dw;pJM#jQaM3J~jco|pMVWH`ta&#nUUm6c<>Dn_wshfO6(#g6g|<^JgChC?v(TNEM$VQ*^vTwp8&fdTBnkbsh4C5!I$aXblUo-c z%g|(rI9C$BYEu$9OW9I=o8gWv)pxc0(sx^`Ztw-{*Lm?Bk*#g{Q}p zeWQ8HGuo-Xb&}#w^2;}AQ+;{z>$`#Xe62B6a;8eAWFKD}OZD+>#$@xCX_9?&=8*&5 zPb1K)RsoXmj3?ExL^+K)Pnpl(SLFA7`DJ{eq)9bX&byK6Kf4K&&behp#et%V(m>^Y z6&2-+msAGI=gkW+R^=?G4yH+p0QYXEs@&=MBf_GlOjfybHX<&?pKCv;-q0RYx$|=o zlX5VAG)Q27c%&;WUlgcZvbc27Je7ADtI&S7sHA+c{pe~wn%086_aR6{C8?C_L$pA{ zU$ih#xqMNvo#{HJHR(B?tGt_k9~kLDpv=EW<=w`I)6NCnUU{-m(&hDIFR!^}1Gez6 z9kwutovYdtK_ z3V(lQ~5Wk^f4kictJr6}5A;(&0j$)V?nt}~Q@|m&5U{kx*I8Sue z;#}78qK?MuV5_sH&kai>)jZ!{#1_gvMddxa$;cmX>N^jAeo{PULU3=hZ75U4CYz|`oiQBzhHEvzW>qsgL%g^Nd`CM}*{v}lpP zEKpQg2~Ajt9!ckTG-?h}wF(MLqX@ubQIm%&`QuU36)!H<$WL@nGPk^(y`P=rRc8`( z&{f%x-! z%Ka8LT$th5;Y8m1*qCE~i=T((X)=?BgzH1txX=`Q>HkCHXJ=j8O39^@;nw0g^1dyp$Mm$F| zgWTaVy`u*?sXNdEOrK5IJ6&a7=r1WP3ZP9Fm6gv6I0gK&tNdk{2>@4@^c7cG*j&uc z<5gD~!iDmht2`8kD4Qvb*TZtP!{*dzjf8=U`kMBR)?mOnB>oy}NUSI=Ua}wRIiw+3 zNijx2EBV4w%#f`-b_X%uP1X|3<`<4?!0_7r= zmD9g?art6p#3#GoBGY1oRSwpZONvStVP4^hpRsh&{#bD$Q&Cyj91NV5D#?8&vo9~7 z8?a`h%IiLNm$|6w<36in)~u4bK4;Ysfho-yI9d&C@X4jQp7qz)|>$>ufj+(Z6r;&el)WqHTx%}&*rtQ|x zoh)B2smz{8x>)=g~S&=bNd%Bkf<}d zsq*?ms-(y1-~liv^99gUAKyJqmfsY<5ST2fQ(lwXvA4sR|A8dSxRZwORQ#s;7@aEj z$-ZAfJ0+=<8FTJo^lVAU=wu&1=bOThb*K8$?&ZUCCCTEKNQ)0sKn3Pf^EcBg( zXuiJ0Z+PMS$dns-#?4pXW*vARA$u1mBdtEz%P;4u1>6{yENaS4Jac%R{hS}zRSWE= zH}h|PN>}z!!mmE0`p$yjl70LjNeaEhr^>Tr-=Cl{Df|XzvXAayQ7N$3C;R9#Jyl{* zZ%Iskh-|;mQx2*LG08sq@4=ZWiKja}?71Lj@3uNM_4${|4YfDhfSNY??+XppUc6kX zNz=yj{v(7^-r%#mjri`njMr+~YUc4F2HT&sKFV7^YFa&yA*3U^t*WsF=a}+x)wDI# zmciAeiEk?8w$)80RL-jfbfnVy;BCIs{=`bsQO?jLI`T z9xd(NayW`_+yY|vSp;QQRCUT$xo1v1DwCNmK_RSJqs8D!_XrzPp#TdJbahZJa^OUt zIyuK!$C;t>@Y_r=>o;E#;>&<-csbgWo+Px-2HneT+J9$#-^%(v*U(2NJe_gLN8@;d4~>el?;2V^%V9QsXq2x$-WzKU&YRzRXiRMf8ffucstvx@iJgLUNYn$ z@-1SMeS}V7wWj*0EoCSSK7v^QP*4QqCm5GJeJ@!s}cUsf|da3PdIw z?x_SLQh6LyN_N`pS{Um^k`zW+KZC;Hzpes_UJ;FcI9SkcR{GU#I~ppZi!7sOt+A2+ zjeJMVqDzQN7Gp#Iq+_a~IcjJA;GeOXu{R*>G4cSVUW7(_HYzp!2E2Lx;`uu5fjTMD z=2!C5@m)V-KJko4L=^L5@x_HWy!=8=l!}xjP~&Q&-et9Cfr z5=p9$nWytB^47mBo87+>^g7I{n8yB^JJh9K4Y-jUp{hlB2HeOq%2XbHP+XLUUxJ_g zwJt`bO>y}Ct}6NR@JhD+G%NXXtCH1pe&^l#7pj{|ph$(1Z(TR|e!D3pl{f5er84yCZIG1>#vZ6^60e}2P!>Y}E`q=Vp9IQt0^AUj@3+y5|SNSjQ*dbxBM`e86H|<>fu6)YBkz##T+f)F#i^ zzaxlFjn+B^o#X-6KA-p5bdOf6yo?txye!92)<-mfi){joJs3gyTH<%1)TH`+;r&k2 z5rOyl(yQ4_7lGS<4!+1>Pu%BguSQ*_X5GG3sbfG}ouyGn+o+5^4MD)lHQQ!>M%qrK)Z~leWGZSOVC7U$Z4mJVr0cP>oTjiTQuX#n6NVjq;&CWE} z&a@DjbZ7dUqcd$${hu@FUk>%J`_|{oz7>r{ylNeYd`$>;W7!S5p=je#wWJxR)s(Q+ z+<|m0-C7M}A3(?=1Y6C7V_>53Jd3|xM-afb**d2%6>#vGcC#5KA84qX&(m_*%`PHi zcRHerssbK(r9@YH2L~O zzoEu&qE4%~7&||#aqiGC>PjFW84d=ke!~r|M=MoLs;Ty^W-=scgwvRQ<4r^eIMsJA zN1Byyn@MmIxuTTd$dxb+^MB#i#nOY+XXZ__< zc@607YmoeAv$GFrEn`nX=+fD@s6IFUf#O1cWNhnmv+nw#J}8cU^n|HM5blry`@U-2(0Q&@geT!g&sVPhq14BmaoB-Oq ziLr-`!Pr8CEK(&#@Kz{spM5?1Ao3stTdN#JVul!S;p$aF^|}!`&M+k!>Zcfc7eW@n z2tJG7A$|*gWSHu;qs=H|KSu~tuUY(nZ|X{5H76Y za8~dUr5-};(T{fJnz8R#=|iJF#_C~7=2)%r-awo3RRPW%^Fw1BWAhMVv?-q_tW8;e zrlX_fDTwK3qD5u=OY@a!%jQrJm4-z7FZ#DCmHY^SAP@XiZU5y{6BgVL9X$chHX(@i zupAEUAuZ9KDcaYd)hmgjyn%<4OtIipzx*>cGxh_7EYhW-OxW>WpnQwJenGHN)D)(Q zL|i(#$<^q%OyZ#?z}T4xStLi|Bi@7ztbd_iH zvNsjQd-|X$FrS7L#e2pep7O`I00Y!!&=70Yb-2-c6eG@mSE&|5_hCnvu*T-B8a=(_ z*v5^60fBNE=Xl@uTdbPNj&zerPoy&vh|*2kf9lz0(v#-XbTHV_RMom6(A=UB%lw=+ zPq+x?3C}dZl_7{IhoAtV3R_QBM5b_5ShIe8PEJlPd@$A5(DxYL5-5#oYnQ(5Eabib zVFMvlu*8GSmXkf#;E($d1n-wgVR%fP5FR?7q6WNq9as&wK&_%rJJzBbK-fS)l}9^t zA^x0t&U%>}goY!=&O?xv`Yw!v)Py|R#MdBp(b+ovmv;Ry_P#FZ$CsCGalzMV%8wxcoQfzDl@hLA&aERd61h0##qnc`1^PSff@!Qv#Mn} z4b^?Wfkk-?&nLC$&UT1h6vjS}kVT3_7{Q&gl^b@_SFHw^?3Wa ztsd{Ud&a#9;dnOARug1jVki<%K(M(B)#b$oDMjH^+HgIdS9If(v00=`9@WGl*y>bk z@B)~xdETP^GK#aZawcaKOw5}&DPuxodq-1nW=(TzFc*LD9q^e=&9JstWlUJ5yd{Mz zu=frNd?O6ut5zWAip4=X2MM;V2w_j&YGiK42b4XLmE_#xisFuv-uD|o*H=~Q=KiTfQsB}l`;AU~+H7PnU=B*6mc8ecMjYN&TX z>+cAjeIOXo3N^@2l6oOcJ93z;wPgUxCLU4TKS zv!b6!tN=MEKur~Ve!_bUB!3&IK0wM+t0MV93n-sw5+hIf;9c`j)$W|E)E)>9fIaW8 z1;EP*3Wx=$Z_|~4akKwNO05U|BZ;Bw*TeSlMne2kD{F9aw>{`zykUbV&ubw3sa=2r zsr*_@|Du@QN(csDi9o}uZ$k$XL>Z>`#d;S(WTXat$xi3PUJ#~Jp=Q?ZMiAX>5jNRg zOX>V8G3rw(9&U`&(Qu%uV|^gkzoAC`0tlbaS;xlls1`N)byjpbw{3gghA})jzz7on zL~{g~p))D4of3qZ0vPyq2x#w4u#cfas!+?%0qGSBO=*ll#7Lk&!uEQ1kW~Q5O;Ktp zg4W!jtAi*=R)Qc>Ije&;hxj*CET~ab(v2W}sYPDu-*}AcmeDKNgXAX&gwJ)LW{6}r zb3yzANIR#Rh0$naLPHMSLS2}ZASBDyP~TYJ?nkR6(L;c9Sa&Qn^eV#4O%NuBoeSFK znvSNLcAQ`7vcy41zyi5G0?2NQ*m$ZE1DFO5%`bsh)S!j-PqRuP6)&B@Zi5KWo)`dzLoH}= z;M|6SIF7VL`dUIIJ|#0bfX^jN4X8~vH;XZb8vIe3oAv)AZcw$Fo1%ak+uxE6XJrO| zOm2?YR@|`g`2ls7jU)=i9~0@AZH2^w6$I4pHWFKfZs-Gx*#eJG5Q$$Ds%dU)fqx}7 zbPPmwJhWbF=#bp)LXndsnkkKkO}vS)ls>^Li90z5Lhm`!QiWwgwYy z>_AL-5p=yv-ys8rLwdjW2FHXs0}z*l!#EK7dJ-DB(Hu6Ih7#i+AfCLFRStX1bINO{ zgi*@bKN(9vK43$%v4heTF)?An*bAOw`XH@8G}tO%wkfUQaeNqL;7w4e*K9y_6*Su+ zwA_SIL4I<;s(#wIRpKoj@z`&&I9Ga>LOZ9t3ZNnpKVJjDCgB7YmNsRXQyvYf$CI+yLDGV79Ox}b zjO9FJwitc`B;U0e)@1iikYSUqu$w(tseA;@ZqfmqcFj+W-6^e>h&wsCJ`q$;CuR08 zN>ko9L5@SD*O2rlAp51wbQ-)jLdXXs#`R?8hLnZpnb`FyM$kN)gliIH+M+Bhp9iWJ zk+N2c8W9z&!wJ%!q6vU+sl}f``8Nl35lDN2v?teSi3sKLp-SzCVDYW%Sb2{~ka$6j zttBFtn?U;xCw*c4_ynov!)_?GDYW|y!}Jirdz-CcH6dZ*6G-{V-_6tk`FfJS4f$YC6 zzV%WzPh2A_@7IY@&zJ0!$%5fHT!UcthC#Sqhq3La1f`NM`9YVv1;$mNdjn~UNRp1E zCMJ0k8-VdO_zkL%1HYx?@ZD?S8|~|k(8H$YBed_Dz4J-nIP}j1bNP_ zf*DmaeJjY`AI`Lpo|PESnzAsRmVvED1P9YeTWTQbMTwEluY;?8HW#7329#SY>Piz{ zo}f5v%2JJwg6h+xtOv{Ls+vQTw>B}J@o{!o<4u-#-xK{Gf~nD(aC3q@Ta<<6b)b3# zDQkV+i{17SiE-Rg=3I)r2%>LWEE{4(NfPSECrsU5ij3b&sR9J8A9^Vwv`vNq=B{;C#Bz|YwIOsx2*e}X z00MSHS!F!{fLFpmv`I^hO-TaxLhss6Yc!5iA!r5A8Z8j}_6{OsG&mL1&$kh@(LfMZ z_YOf!HCCJX0RVl+IE&$IGXl51cW|LLb1-n4Y%JSos*(iegkHmFoqiMuFNC3(02lNQ zz-luiGx0(=g06T+n~_r7(L0csZDtElud$JJKfRh-{bhon^-Y*dxBKJlNTLE^mGtuf zgP4CtjYZdopamcc-H;Ue2}4tp6KcdT>bhdc+>?xK1y;u6VD5FBLE+gUtg_zm#vK5d zwWSZp9tW>92o6=y9f1g;W?KMR?es#x+}<6^*;obi&|ZRuT5DPsPMRS&3g>9D0(NTe z!L%UP1LuV9SSm?iuIMF<)pFkh!jIu7A;r~Dcl8d+WlJ&}Qqy>x`a;kWJ~j!nFg;XV zwi1o{$HZ94xA#&-MPCN}k8BJnE`L;#U?lfVsGXV^E=#L>jRPlOClDc2Sd)h#{|g=} zrv)?{AAyA*!q_k6-(vxUIskKdBX|dH8$7G?8I+B=4uYdA5KUrd7h=FHYkRM;Lw(R00KGN> zu%jcA@}9aaFm+dyGzo6B5W1FCFYpBIie95xJyHvRPKp5L=#~WWu3jR#Y^i7^4n6Ci zqtspqp%yDm#i?h{{LlEpaVT?@cR5&kAOc%mb>hSSC2v}H_Rdvm2|`ziIdtcr|1+*E z9eWiFeH($Pt~!?OOK2>x`zZH1R#8)l<76^Ct<6*FWQ48~3!VGY9cbbIj5#P8kKPG) zJ4{w;EJ9cAMAaOX>i?f{x2SSTpcL|x6M}P0Htz(BFGgTfX1@F}d*+J&8Jp-xIO2*B zm*ivBhtO4svT)#!$zA>bj=Lxe2Vpm93i^Kp&92R)AuEWX-*Ys-H8DsgL?jNf`oJOy1stEx5A8t)0C=2Fs=Gm(z-VwCBX`=!$%}} zp53b9YeD!yi@2QIbxuSDYqwruX)Bplr$L2EjX}`rWY2n4lHknf6^=9wQO+ZPaH@?G zY8x75VXshdKwmIE1pR;580=a^Y$|CeYv+IjG4flbdYmHLXSz}cAaoO%03F^tAcr2@ z3XCUg99wA4Qk~R$FfF{{GnAT$pvz=qnZn!DI~c2m{se%tY!F8cWz*7kO@bgfd8{Gq z*SEH{2b$~j){LnWKLf4LOsiN9?H0smw-KVF&guYmmdJc?fM0b7 zRY`*P?KZ-*YO!<{-g!jOs^X}{k2!((JyEn=sl|q>?v;2Cz@D}N9hE468L5eNyE);2 zjyfE-H%y-hUD|?KhXOir+kxsT+ycBCyJM;(ft#~!;H(<#H(RM;2;FM1Er1%VNEEEV z(GHuMyS2q*fVj~{byTCEwrxXHM_v9Cfc=WBqIPYMf_%(2M%ESD4A7&x1FIy#JZl?b zTDAHi(Eec~I@)D5YxS~35vPROWrRxIe-2Ea2wIgKl`5c*Z97m$ojwh`_ifCsbt=HG zY+GPmrE`jvT8z-8Ur!VK`cA6z*f_Tl1@d+ozz;tNdk%}Nww<$s?rJ+-;YZy@?oxAy!*gYJAx)JLU-fJB^G^~ z{Z2)8>p;DM2s@$xZoIj~qTSu!3L%~X`4_B0xN_*yGmKQof5HOzcSF#{aN*M>CPWvv zE+>KTIV3KXEVbamtxHUVZk}Df1^r*cG2D1|i3t+HxyycKN*#z`R=0-@C#G|kSO8u8 zyRfeB0PV*}Uqm&CjY7*SzJHfkNL^gK3|k0QMGzD>E?(l(w!OTp1KndS+9vaBDW;fS zUSa}7bo7GG<0HWQ5C&zG|A^kwji;BGfL)xu0BYePy!ww2Qeh3{#@kCws7St8c1N{8 z0I)|bKz9ybdW@sPA57z^pH2uN;R!NfvwdV@h}AiUid zTjddTkgmdwKbTl3-CV+y)W_L7clw06$>wNRjKKzfT=|6Awj8mx^(HiS^5;}qLgG}< z;EyZEFg;|+bPjW~jV5}=A6L#{dWa?^gol_tmRN-ojh43K#zRa@xCl;SjwOyLnKT+V zPGVv~bn_GQHt2tbphu&zoO!zO6B7@^;VOphzi22O#+RxkcrFpn$wEZU}j7-75oVEF$)5VW`rLcIAD>9rcN%j!)OCLr7iA+l>R7Skx^~F~a%7 zp!;Zioxx!&fRb62WBLr5l=9OI;x2U;q+Cr36!rS_0WchJ6|=i07C9+{teO!o5R*n<;q=6OwwT< zYq;GQAbCApx$#&Ni@3O!`7aH$w}R;X7GZ5~bmO!pF7Y2oe1|%vh9Wp*?#6FTEaKY1 zjIiDa%Iis;GSRHNa9tChxUl{-2)`E2x*P8`v8dZ_W&|K>l~OqfT47u{uyI9PL~{ZN zpGM+(ilAN1#P(qmi@4=%Mi~DDbicG2PjltQ#tm^{ylAyj^AJoucj3t<7HQj=jm+#X z0^O@gTY3P!?s4JFCJsPo-SazW`|2(Fdfnr~p-mk6*1G3FP_DD7>vfL{r#5k@$6lAb z0KB(sOs?8Z&nB@Q+r+{Q_iZEflD`IrS`eJ|;=;F$YZM%w()ACFTf=Z1_F^~gZQLM= zeM;l?KSZhB5p=n1^OPyV*e-6|LTRLRKsh!H$pne*=Ee;OH*rLIZ-f3YN8CAQZaHz*+!#_<5yXoF}IhJeI&eB%a0jBQqf`W6^TP0qqN8hiY ze20y$yLNFF65AI}OkkJZXRNJHNabyc8Vi-B#GK zmGKTZ{MzPH73>b4o%4s}HJ4qmTR8$y>hDPP-~yZ0|bTnmxQGK^HqxwXcG^ZzFIRIz8vc z#m=_o&~&pS9CjXtQx6DTWhlz$=q_Tr+1b_{YF9g;YWdm`UiUg2s~&`|yviWSA5$G; z``X#oyqf-Ygu_R{-Fp!@lywPzOb%oF+u7zEMq8H%&+CtX>k9-eRhv^o7AS6&OBD;|;3u%q$*3xc^N;mQ?HEb5jw9wELSgpag|yYj{pi*|R1JbcB^cn=7lgizc# zM=Cr_xx_dW*x?+|p2+sY*~T+>-j9H%_-@w5d`YuHV|deFw>4BiP9$1hKO zC_RT3ogH#4&i^5FDVbTQIKFw}Be8V~&N0B)XydR4GE3yfKTj;2a2Gv-^$l=-x3L`3 zbK|1N1(s7Ymj4N+PlPV=a~3X+n;y4-T8>Wv>&@Jm|^cY#!aW<`WYzx<4Ojsr#M)BM5@l zBuA|Za2$U=Jq31F?b85#-v;hlwSpeUr%yuYx_;-KsMJz~E?tE?zdk+1wJZ64AUe!8YpB~~mtM~?BZnbf{R$>8!~%-s z@Mj%>jb{MCc++L6s?> zIS+K>_Qw@In~8>g8L;o#&}<~`T>rR&q4ysPX!>dR>M=ssGCCmRxc}(^q$$^%fcI1s zOf6Dz0mPOfE`ZX`H(daU3mzX8U6uKM{{fes>zmqxt6HlX0yWJ|ZS7S}?K7&In;XVw z)KxXK1!pNE#sACcaOv4u)zA@CDf4#u2wqa&3c`obe7<15u(<`_ooH`v&1h?{Ei8;p ztguk11ll*WfYd(PaaK-2w@jtgW!01X{+iBe9I+h@^otR$K=2F&q}nrWCE&~BW^XWa zzl)q7+qriSENPK<;|~l3%+D&~_}dSVW>itMw{~br7#n*n38B>!LF8D1m~;k?0V3Rp z;K^_+2xg}snENw?ukG9s1Ys!O?+{dRAV4EaOI3A4Fi;z8uc~ioQz^qz!{XP~x33O8 ztWV8)Ho)$)>@dh^1@BYKP(zjNxj8NM!J6Q@`nI4}vDS{7_CULS)3zOnJ@Z%=<(rQC z&IoB$YB^~dYF&L(OGkU4zFlivpuK99GKMW*6aX959jjEoTyNU!)n8z0n|AV6(DbIA zdX)Ti+Iez0{Z6@@@uplh{!1=r4*QZR&zdTivzN=|oDFh0ccWa+yG$hwb zeYxEFyIgJ?_6_shUMQD4mdWMLb#l4uD!KgiA-UZBiCpgSeaj5@j+e`Q2g&9B!{qYd z#d3N0ez|OYTP~0MS1yn4^&Rs)Hdii>A1s$Aj+M)kSIXt7XXNtqcXD|q^?PP`cBEXM znD_zt-%{iyU6Esd=H(4i1b=S>}qg0^1XzJ z-FQl=|89opX1HUq8ozz;t!6P?$nADEv~C<2H74OljSa3<{WBtG%nh!^8>2OqxdG`~ z_GeCJGIKVxtNtUSmJ?b@S; z{wviCkT{zpc;n!Hthk8pe?SxxrU!VN#2XPv43tW*j!eO-ba;`k5hjM5YcWB27*r!Q za3l3-O=Jo=x%ecqR!WR)sLp!DOiM{;4ho|No=LTAiIO`9xiJRHut;4{)YG$>S@dpT z0ioNYWe%=&X0EqX@J$O`b8t|wxlZ+8ADKuV9%6_fYzf_%O4`FCr!6oONGX{^(}znz zeCa#T4rhYLqN#azn6v@~_wJChK`y!H%O&qFx#S;>nTL0WDObs*;6=Gi{Z%f7uS=5Y zf5>IVIEkFOpIr9d>qq9BeJMNl9pjcb3RSd&{MKja>H4l_ZOA0YbNKMtmEht2xN?@FuIP33xck@?~LyrMsGy9uoA; zK!omU>O2v;8XU~C)NV0fqsL_OB;+twf|yZO z!P-#z9RfaO<<uUx+QA%@J?urrI!bj0P!^wx)Zu13Kg>#B5n)ac-06hI}ix2uL-ua z*Ecr>TJS-R^vSa>!RuD*Fpm1t%X4r~52T?q&DCpyHSH>W-yio{xj4Z*6m zpi1B06*Y0-XXXLDcR=eSo8Cgu!&f_0`ZCbM7gyjI%^?jGt4k?OpL3wYvSnVR)If`6(?kf3@5Eu$oVTqnqoI|1OJ$acYQA&@G{oCT08p3cuS_ zE`eT{?9{uZQZC#SZbAJc==wj4+>E#!qkVd(D>~Z41&Vb6avJ{!LTB2Bx@ zQ$p(%(0R|MC5#<>WS9c0^kZC+)$Tn;T#Twmkb-LW9tX<@b<+Rrii-9999Cg7=p1U% zGRUqv)HWp0{Gig$08tm}sci(bL>P~P;L{{3x_MY2P_w?uq1s|}NWZ`x+1yEyvZE1P z%xW43ZP6&o_cwHL-tHfe0Xlpo`+T{rr$njdBUr{>^ zQdTKV9Ssd=q?~AdH6QbsX)G2dfOXBvcMFnb4O)q`JMRAz?pN@B$K_Hx(=crlp3H^! zH+b&3f`V7RhjD*|`CRRI5IJS{%H)c4QUF+6Usp%azrTjr-MFd-x-W*+$69_3Z20S? zFoW%I8|WE>uR|v~@K408Dy{MBmS2tMs}Vde5mYBR&XEL-8;WrPQk-R_GTva)zWbcc+5%pK#gv@WX%R<%rwla&+^*_}B3# z$mRbomdgou%H_o8?9m z8eVp(Zu~nhHSe;Ry97^^$hu49vg&TRtbS20^ACzsB0xvXC$mkmeC<;c_Ia@1es@~8Xd^5@s(a@lg zQu)8Vbrda_a4JIsG}gobi=hHm3iV+0V?D%iT-la?hc1xp#|P z?z>Me_kWJdBwIO6hv75CGHJ(Zm4%CPW7ngN&#u6{o$sjc`X_@b|IY5-=IUrFwI8eI#j`sIZSh&%svMu)#3g&bL}+6Mzx%mON;PN zHRG{X#2~Uk?RYsp2Z~_y`vX7uxKoIg@IG zVa#Dwtj0k~nl&5bO9j(;q$uhxIu*g@x5sZT0fuHh9w)#fsuEKeDs@ zSsC)5N`Rm3#L2k&ruz2!ss^m(TLTUCZS7_UpFSx2oU7p}myX~EO_8sP>~bAiz@WlC zu0ll)U<(+OFRK+!uN#6*YS8ooJo1UZ_(27dWzY?1K!aw#oBkikJcI6j;F@xqI7bg^va4m;01ToT3(18e^y`ygk9o!d`OK7*{Sib&9=+bGFpYvZO>FS<5(cF=|$zuHOO;~KKS|6Z(nY|B-w}|9!pzgTn z-$9hCEkXOSX&k_ImHEX{`m0}wo4kpHk* znogsqY1v3pXeHA=1jD9jNUIkOORPlJJdNxn(A}{FZo6QnjnWN^Ak1g>&@5e?JW0Ge zX7>19a<4gy+&v5L3SIQ98|^MyPKB6V^w#T9myx^ZxA4g7q9se5E?O&r97a)-Z-Ai& z!84ubZ+`|QgXH3M(zdR(Bk!SB{`kE#@>$(9VT{|5^=@V_;<1T%-86FB{j{+91G4^N zXOGuUBfHsAOXh3{Iv+t}v!iB*s(gHH;m8J=IAF)r``;mJk*HXIYzMg6?*>|QjD8Lf&FvU;CW?(=WW1W-XV*#`Wm=YzKE5rcgPai&K$C0hC~Ke$Yu56 za;ZNDm%^bVJj_^_^p2O;ovq1>H3#M#W*p|c!)_gT6KtK!FsKc?bC*kT%L(qVyS9Fc z+j*EF4*TnEC`$i-;+AodDVa@?^zN^=={+2xxAn0vEqagKZP8;~WO~$KC(Sz}(xifF z9v^uLx56XiqSMqR_TG$q-Ac@1&n)pX7B$AHl;%3rSg@*5?RLe^$a<8X>hlO!*m?N7lx}911S)g+zq$eScs?@AzPuctVT{2aHP*6@ z%$yk$KVsj8Nv86iK8UEnwWT$f1BHE0sfM3Zs`2})7cYP{qQIQn=Hxo(wxvq~OC|-D zylPGKJs#DnxkhR`xT2 z=9V_K`v`B^FM3bjF!$CyvbXLXKAy99@9+t1%;TDZ>jL2eCEEP(!t3ua2bAG6WzIi< zoyhRL*n zRH4Z^POx=q#{L6BX{b;sqmf1Wv}&lqG#CtTk3%tRN=;*dQ3hHoY+EOr5=7v zywZkD2AxWn*$i5jksbx7dq;lTPWfnU+!@RDj>cdsR^j^daNGBm7Q_b7Z6jUxSbRNo%c<#rJm+GB5?XiI+&3)?+rGq(TLE8$rXH?Y2K)dsqkwPo&I zZJB#do8;ctCbbk zqK#R%YGc-IG-jcA()_GpJenyhBbQx*HzSu;BwT0!!i9#L*^j^?qL1ul6!t;9?@h2F z!+yqe+H-bbgUy(+J8$Qp>=`p@rIDdAWA-47h&w0TfG4jR0@*qsC-G zYcp!ykjo{9Ev?NhRjaDngW9|Vqf%8{Tm7mg*!sDvFyrts6_p&tJ=^O2(Im@;$c83*?&l)#We|Q13`AqHHn>DgVlHy z(6kX58SMu^2~)6hfWa%HgH|}1%Sdarrv++mWD8sT@jA+)E{1JQ`I3L}y!Q}XGp1E3 zmHeAWrnH`soD3!>C4G*WvN4jg-ehmm@A3x+vgAHVKk$!!FYrmatu->Rn?-<)G3{=q(LEmo>@!2k|8s1ZUBYXVFWxThSX!t)f2$;1>z*DEd(>`uy!z^u~It z=*1Xj79lu_4j;ofwUb=7{ovu?xQ%@(yKmz$pg&`A5HjKPFNEgvJI~6;I*KyoCR#0N%S5J!wJI6IK2L0i1$}O|3Uck1^L~TXfCeC;RKOoAU=-BZI9r%9fFDM zdLT{|m?QBPHj}Rb`U8Qbs@;#oi38WGkI^iR;G;^lAP8_zhvEd$Wh|Cre+=X=EOe#k z0B*+O#DUFXuXs$URS3>vyB~}bgqP7+H2iHqe@1v}xN!(nuLq-Xg6J|Fi`17t4*$;x zy6_s^{cxNpJjdgYsd9e<^v8sE6yEiCoFKXk$Wr+IpMb>x!C83s19GD99Fe8)uL1f4 z!iNgqlMy*Vd}~N%S8goBuy-(m?&M_0f}@{fNG7M8pxy{ zSp_rIs*v$&jTo=4Wb7dl`(NHR@K)?t-jAT}G04|8ci1Kj&Q2TP_k zjNAXFHS8DO&RGcy$xQC)o7S+~{=luahTV-@x7IN19{Qu3!=3+W-k2OW=;n*cT%1xNyVL+HsNndvnKyJDS#x%S*g>v*UtNX_M4|=g_DT zJZ~VYt1TCu)wC=vMAl_icH>>4;bPAPH1wv+smOc2mA?m@E+7!vb-^nv*FfmTTOjl) ziG55lJd7xJ+b&_m_dd}}UKMOjQr zvx&HsEl+q%M=ZPFzaCmt%GSNTsC<)4N6WJNo%~@gDnH>L?iZE#M0?ad@mPKv{AN>H z{vuAWBY5uP`pW&fvRAlfJA4heA6VGNRx;3orDftA$m;SrD2=i7CD{KEJWmR^`_*OQ z;IhDci{P&U_^lAQ>jh>nu(`&3p7XwnmzCNdL07x`HD<4{>(xY-`&r<=VPW@lnVC2P zveJ~oFMI_?Km@b!uC2bk!Zr*46mVa)uzPIzO`HQ+Z;H+@cokKTAUbb6gc|9=dNXkb zWXUPwe-_|xkO6i%CIjx5oW0;(s0dx{A5#n7|@!6Aa4tUVKF!CHQ@yEond2k%;3Xp1n%Nm+i16CfX%jWLY7wF+;8 z!Tg!`LW8-S>az#)lW#(=W)0?-${*%nelGuTKbT`0*Spbt%-@unfZ(~Dym!E+ zrTB6H-(-Os*OG%C4ClRILB{h7-+-vcyovH7cy1PS_v3jl&}Bfsis)AW`MMCg>jAwt z;2hEKWK-JfExi4VpsU{fh~7K!di67!uW>PeueHE?I;8i40~yn$_d1YdoZf^f&&@Wr3U^2^c%?m`yP`6 z_rrQ`Sm3xWYB>5`cmhUn3c>Zb-U|+7U>6}=4fNZ{fkO!H2ln2uz>!^qkcDw-3W7rj zJsH`1!Gkrlv+Fl*1q*+**a)44cMR?1w!7)qIvy#O*^VY2bqm&JAeKhpg2MM<1lETo zkN6O``mm(jMn5dM8Y%yux9@EwQ)p=j(0!eXo*msUy3k^X7@>Xr?>P z^dA2Z)}p)ZVUrF1*q6RU@9lS90C65w7=IpyV#go6QR@%7i;fy)n9e=3Tbb2J?kHbS zXOH6t3o3IJz5Ky$1yGqRNTW>c)7^WNk!_V$ff(frIGL|ZX5uJ+KmfRT7uR;4L8QKR z986}$s9e7|=%*71Leror^dVQ<1vMim;bo2`SjTpoPO;#F{8-0W3YxqSg)WO$awN@QPgAh|K#mO#l&VBdR-nlOW| zW}u-p-qwO=xoScw9dg-7Nw$O%+nQ>@bu*!i?qdSXs%Ud$o8w+i_q+hhQy0Jr`b-g@ zE})h4DHWd-@Ju?+3be!%c;y~@(%Fux2~~7m7-)`S`+Lf@nyyPl$@Tw#S!Et1m`jzrajgXz3J01^jx;JI`? z0Qj(NM-Hv|t7u@({JH9&d)Lf>Pd341|(RE%nXeCPb0^o}vaFx@={QDyaA) zR5}2CM^j5EWYzS72QGnPL6i00_R>wcDtL}wwquL!`YXDYCY#j6g0+FjpHX>|O|WT1 z6|4(T0lCLJhpJ$`-23T|^4h8jjt~cv4o!98ZK~i%aTp>Fal|-E?sIv+EsEZ~;An9e zL5B{Bu|XWhNC(N8K}Jzs$fVK`yTT9N+%?db-?U;PzO^&KqQd+ z*I;Yl_Jx3k3`|G;GQ7fCSH zB_e7$L(u4kT)CB?>}<>GgG6_dB)hFHo|3j4@h5w-_^bMaZO@7GnIj}r)-aYi6Sg_` z6?2klS?8Gc&u(kB3_4gOlY-e`(a}~N)}G3*kO(0Ea4J6xj?xrES(&y#0+G78YoPk} zl&Td}l?=uyRc%R*zGWim6b6zKCO;OOo#uji3AEb@Wcyp%%o1;sMQa)2o!t>Z)-=_s zf*q1GB$1Y}nYOr;41|FQWbfDj^Na-3DOHvDHnpgN10?gwJDt)|`^Fm^RlzLrCLeWI z?-n#32a4zo^p$eK1nS6%78KiqL^;w|cZpoj;fgAVivJBxbSY6{B)Xv-vTdWLQVGUM zXwqMcH1TMb6y}KWnc=Zwb-CgLZ93TR}F)2GG3<&-tu!-)wdmAULoByrVfKfqK2l9KqCwtYUg?gs~@yH)+zl#Ku5b6-*XivZr^7OxrN>72?eoxKoiG z+oKRPq8xqb=f*h_uIn(aGQwKCJHYuPdDv6lor?hiT^Hc+SUAw74oaz%;Y5zmtLK<6 zUdFbTqBE6`hk()Nwo5(UVSE&ABNxQ;zc- zE$OC}l)hAq7fLxUaCD@bR&ilU#gyYBTSIOVf~}W0fh>m_1{mebN(E2UBfs%fV-$C`5M?mqyja1wud*WO)5Z1!Qgf%kA{|D*=vr-dR zoNH)bE(xd!YdQCu&UwWQ1Ut{*C>(qC^jv)MngTdlE;1RPyw-AQA%;wpC$Hl?8G%}o zP1X#2@_MeUz^S1zUaPql8lxN>wtpcJZXgkCRYkWE8)PEd9^ux8h$*E4sPI@V2umS|jck8o5Oe z`l=f(late6xX#Z9eXLVzxMZll!Qzh{5Rt|s>;a*0Q*GmB&Wfkaq^jAN0&c~0qv%4Z zbL3<-6mp0j_+CNL#Ri8$?Fk6jmR7F=x zf&CACxWQ8Y$nZ>l=z**?{*A>9mIv~`rUI&Lltfju+hFk}C#-HCqyTf;hP+fo*U7k# zRIwH|O{9u$HduH`9V@!Y4`)#vycYdX1d&iy;#mDRXU3QWCsfg0;zFibJ+^TsYm^}K zxuQEn1X*ai2C3STz>^VGbd^DJT1mf%(?62pr6A?0Q$_cRjH-mbyU!qft-;(;!_abY zNLuu`=R_{_F_3|^u3usfB7 z7z9}>L<{5>*15sDVvE5eux3@b!N;W)QV;7yvutCL#9BltJY2Gql*AHE!iE>Ek% z6MW2kG8K0%*Ro#2U>fB_K_QoM3PtNNtX|Kh3-bkuJjb1p64B^pRT!4ElKxoxvVpOR zc0Gm;Vh_E5u*?a=E7;>hu}3nBLQ+`kV?^>MYjidnu<;I&P9A0L%*7s#omAmY@u|YM z)g^pRd!(x8UfHabQWA>p!Z9yGq36cyemvB|-#qhw=QnG27FH;D&XnN#*qRjv3q z7aD@XANfestW_CinMZ#)iOkIwNEMRJWzNFed?a$#W?^@T5*9z0$$=+<-BYCRuMJaXUjuvT3 zF9N~NFNr>6lh#^DDZ%QFtwvm&Ni(hWm4?<@bFss;OBixcYh5gFCn=|jKlyx8NwF4x z63w=dvn3GOesmz|eXK;c+a+?L1R@tucWo@g%$6YJ3F@qj1GGZ|kU^*mkh30TNh+6s zLOU&~P9;4@xUh3fbtA{mv%D`)1cBc$L zm!SFHp^W{ykG}_H@pr2H(*0lwm?OVIp}Gy4@9)q)o0T%#8aP78aR2Ap5kX^uy_)$a|0MC zwDM6{aUo-l0k}*KyMPo=J{F;YKW!G(l1HpX$efX%N3ol4Iz_3#Ml`IXd`8<`Tuf~A8C#9wnPpXkKo1J~M4T|ZQ#bmMMu{#@V2Z0W zptv{*s7^uhu}Y&Vo<)}-IwHQB(AJ7=Dyn!kU2_ACVN9nQ@XQ=+n#FTDaT$ZhY+)=l zL@md8gw3-9Iyeg%e~Rs_krvTyy6wj7!J<*I%q~i8*OUf}8M;#2uI3hi%qq5Qr==ar zTsy)j2A@<2$}Q#X2BWxE-!A9v@kVh1jAh}*=C~?eNqHw3#WW@FSMk2iXxMlXGUxEa zVA+jEL!b^f>v_{+AeVVDomu@;;D5{D0A#G83tcDE7autX`MhpQ@v&v4I_o8E2WKHi z>~tPyWd}+i)IFZ)$a<~q3A`H;u#$2j?{Y_qE+nZ9sB`&MKr2P##;)+z~+X>Lv1bS0#!+=R;1Q) zZI0tXR=81>l!;0K+r2T~!O-P&9pSjLbHkS`N-F4#r>uB@49a#CsTNf-lOMIo!?&Np zN|jWtf}+zNuEoxcl7nXlpmZ20+Y+$^LRu5ncD!dWkAA3$ktS8LU;(akd5t2XN*3~V z3~y2Tb>%Es#PsEfn|{KJaEH)sqPRIlt7I`9rv&gIHM$kaZ;5l~gDR<^^Yj45ck=kL zL`oP+=FzHTDU(zgz|}Hd%?dQ*ayc*O1|m@q;kDv^1@9M1zLl(EUM(H@&oGiJg=@{o zNxVigXs8V%i&4%>*7EwKkspO{y^hx#M_v%YwJv{wT2_$eI;(b<97zjqMWJLa2hAF! zKWK8iyDtq{a+J>xn|=+sJ4-g4p3Q<@M4)JL1<I_NC~O%bx-uw-%Ar6-zraZs*c>b}V5( zj4qH-1!;=)LpQP*tGS%AN)$EY4nB(`f3fx_*|D1I_}>50|gMl&<0I)?d1oGufb!@tCA4$}yjX`GV$Kk0J}mhn6FL zLG$-;$T43)T7xDDbaKQcXmV#~j`>{~6Y;eP43*##l$SYj%&Wwm??&c`%Zx<5DtlS& zW2hMzhqkNo!cjvEb+NJIB$}jrI`49Etl@<+0!`e?z_wX7->CBD$*`RXXBl*t$4RH0 zTig^vkD|(3*af{~;I=*9S{qBK@-1u#He|s?_y6UsEYhcET_S*>-zrbkS5lF(S?jU8 zr|wV;<&VZfW3+X3Lj&GFwq9PmbdaI0!{MXi#$f!Y9Y$nhG_qOwruHFari6o}-rx4< zotsz45sl$FK)nc-RAXo-Uqv5~`o-zP5Nj0mEq7iL7NyX5%QyU8Xe3#QZApIzZEy${O-K6uis`wPPS&(j|Y@1Qt_c z6GLmTvYB0i=mO4fpd}#dG$PGsvX?Pt9})3olOG_$?RKQ@1xy)bz2NFnMg5JB@bfQQ zhPzZ5^LmNAmr9eMZ-V)@^`|oJPYnD4-@YG{wQ^Z39chRZeTjXfBC;BV`d{NPeQB8Ruu zsP_>0>#x7wP9(WB5^4TB9CCH&%FrXCZYx3dzG% zztZq7CEBBub0B5O@Gc4J-H=T+v+$vL*$i2uCcTXjmglGu$pf0P5%IQr&bx$@cTXVR z>8GF8CCR-jt78)JWyJj2JLFaea_T#}xUk5azWplCWkyRNbR{I9%H1q&_&g^(UHRIA z$ZxUa=g4SlS?C=r7*6w@7z_3@dZ14%!DCnqmGL$Pr9nwJw9;XV+?i?_zW`zXO>+d0;oteFME6fESgPS84^3ZV zu;QrZ-#MBiW#2B&65fFfX~;gsg&q(u<0l;Kzf&EwlZR8?K0ZPK%=%a>9;)J-3FMX3 zsEyb{ka96;qG+NG-=ofY)(Vvix3=bR>o$CdfUZoMZ`T;LeD??lxd70+aZF)hScAk& zc`u|C$N6eA)k4eBD<4O%W4a~f=+%FZ*nh^+NC?%m*oVRIMZPa^Gh~E?H={EiLuZ6n zRvuc!FJy)`V#jFfk}{x&fzg1Yk$`FihbI@}_SoyTN>RDku{~X{!Xc$K8$Ai^s#b82 z^Z;C^@7Ccr-EQ<(YJ?7g;~3Ho(AU?90o1|*n8J#HI_SS&=oJtbW*!I5pHV1_5%zK z*)gLO;`8Br2gG+4M|r+ox#RWX=6ZZUOZm=aE)UB3VAh#plJVGS-W1hy5Z?uyzxj66 z%^!QMMn+D_pCv*0F5!xTZ`X$TM_D1xvqQv`?@}GTasDZm=W({@Cgr<~qgmgsjdWVU z;dTMi@%^hb&Rnch^Uv5#S7UVN6gKaHs=gYIVwgIe-gR8H@zrRlxz(K}Q?~P%@zxFx z-x{sj@#C#2x$;FgZ%3AF|F*#uT3>_CqSLpJ*9(n{F?V-dUp>un#d?Sx_B*E`gPD6B zI`>XL?Whe`>jZrY%O7>nw_P_cx^C2RPG8i%Naq9`QVUrKQ?>AD+5oj8?G&aIB|e65 zr&v}j(nf?8>Dr280U=nlJ;`JJ{RtveS@N(jFMq~vx<2lfx12LK^(vfxjl)TRI+~&S z(0eg)^2ZqJ_$#%2-gI#2T7+W(B~$Mvj@^x^zBzDQf%}-0P$VIiasIpW3a!eEPPiA~tqa~%UGUU+EC)sLDkqj#ebfE~~_X{Z){wcouMUpF6i_>p;wr%fxX z%&RV`C@IY=Zc4T_N9RSb$X1RU?!}nb9LHX&a9(kP@-LZl{F>G{#>Gt-pEewin8&Zv zUph}5AHuw;H4;r6zy8owE00gKM)bv^wz^pS_%3s*qr>ebk(L&fPTs0m^I=CXRuz%Upu^jV+P`SL?N1Db|c zL#&mFMK_ZHY{VpTvoyImL7H9%GI)7;%9OXNTkD6`$` zZ7AQw_nDdd6$FIRy#W*t8e*+&!F21B5Zr}Y5)L48HdI10T=&JUa%AgzS88k?j zmS#Tc_ebBwwXwaTg5KAzVC|?ddA*x~%%kqZZ*K0kO>kLr3kIb7Jk2aSdOvg`MvxCa z_xX$<$8MqEeNK5@y0r8D}Zl&~-mOsJkyXYRS_yMnPrkvU* zc%9qQi0j4^A%4^!34L=$7OX~D;}bd*4fQ+7`T&RTPPuO!Mvlhr;H^1h9C7LnmNV5i|Xn%o0$B1Vq9Z>R}rv zEPoHAK1|7yt77?4Luj8DG80ex;5nN05CH%qvOyMz!v&CE%wqHN3=PBt#1c9a&~GN+ z$AcBfKaChVfB#$$@o!|LKTBlLb{Xr6d8#N!q4 zP`GVtsJv!dMEx5OrfHjq)-gUpwy4R6GNW_3Owj*2jPA(=Mwk#F;yu9Z|5*cIhGz&< z1sLqHN`2A}8S)Hr`6VE|W}_*MF`5_|v`1L=>JIV}K*|T8e-Slwh@Fa5BXHm^Sv!-N0iZk7c9K`A6G(__rMV}{5`2er zeI>p~x_(wjUF&GG4t=P>AEmX~`d`upS*x{K6jD=%+P2}S%;1lu&8d4!8zvs#VZF>j zk^;pa3+ar#g~Wtaht!u2l9XDh8vEU|3Hg0)hDc=d#;QjP_BpevbCiApmW5NTiJDx% z8jh!JnN&OW?^c1uT&FUm?t$=!ap>OtHI5G_|CR}m2O|Bi*92&4<0dz#FExAQzL*~3 zNDY8e4Y980lP_cqxhAs|v1P<3q%n?wxy}I2uI^YWr;$mzF*5}H82h&n`<^WtZ*frI zZ5a#H6HTKm7h61VXxqpnQ>(gXAd-=-#zl~Nr6XDLRZD(+V3N04ntuq{YM8A#_!h*=(<6bP-K=Ds%JI&*nL+3s6Mur}&us1WLQ>XLwuhHw zCN;dCwnt{aO)YCi;vpA~lx>ujz9(bpsCioU4Ul`QBU`#_E&I`oWm}T}1F6}gY^`PX zrzQV9W64tf#UvXbIN}JGI-rG{B*E){Ck=!5QU|n|o(0xx4j!w3%BoIBHIeT0g=CR z6xL!FWT>zuSJa&`25*Mo(CTJA&nhIJW$eEls#4#xFy5kqk&n&H$d!x@D~rza#$xFiht}B=9LZ2=Te7Hp6{KEA$+}oX#8g-v z&QNxh7682^7yk*#|8YqdgCsMQU5Op)w1`Mvy+8JR;IQ@9d93`WW+=Qm;*=7x%N>xt z$1Pt}KQ}|^GqG+cx{K_=2Vi)J!_pnEH%FC!M~0#+868%U0Y(&3H#?HE-r!2k6&VVy z(tEva(T_sx(<#xHu|i&xp=kG4V?^(R4#X#CaA=F<9L@(6KcMhTYI{^Hf)xiN36W=0 ztn~BF5KL)+Jp%;57egTX?N0Jl&N}u54`wF1tRk@ytYDi%$vF1P@DtQV^+DL^hr?>E z_Gga1oT=HJwSB9&Tn@q4P`Fh7nb>&~ZN>Yb{y%1>ezhe4i_6BR5c_|&-g+vF{jwy3 z^M90?bRC^GSuqap-Q%!Y!zefqu-NvG46QO#;zKT<78o}}?roGUCdvAc>j_zYl*9~H zcEJX|P0eA)@FgUg<1MM$8d~%Sitc|Q7s(}*d^DuiQnFLT)nE{I`KM;6b9orcs9Nc} zA@-rpN{i_Endz)0i_$~#lp2l0rF2#S8J_nXjV5daS7A|I+a(8BURbjl~h>?UVBaVUiItM~$gg`v87a*{1D6_1G z0q|NU5WS?uK2>E2+$#fvll4%+Dw?R&92}|Kw^~er`R#yVbc%KY;o43pRysZ&7y!l{ zl8V1Vwwh$8A~p8V#`@R5K+=}EO+amPkfqG!{FG&`JdjamGrI-EA0W0xbA>V0vyl9n zBVE^^c8+-#WhT9<(~`TGZdxI}n1DkU09~R5V(q{nQi}!`L;BSYf?hNbgpC73kZNhy zna=dcA2X?C!jMN^d}Fy{{#MwjU)f$&Nv6bsAnSJepp7Wif5{Lu){L=qvZjwGlE^@;?bUDtgDn3{ znu?|mhcKy5rt-DXHzQQFtH8>58p{3BQBZVt8EfUhbmJ2Md!=(m zkx~nAxQc>q2*e1Hy#Zv`(`x{8Z+9qnWfjo>86aq?whozwon|;(iE~w10lRqMV7kt3 z1@UbiZ z-!oHXrt>USx~ZQ-{(BCFB$q!bOE9v78P!t@!((c7t8rX0o&@4ZCDzhm?0-Xt^|M1- zjrX9!XPwkAXn2)#8Erm2GhJr2#PLl4JykN6lz=h_ha^;GeXMd`8c}SO%-C2h%#~DkELDgzo%U<69-W@s|xKu4y~@Eq#-ki{ZHDA-u&*&G%c&dPB*JZ z=hk!d>Q)`?0NySKQz~ZaM}~y^|3A+2?#mFEoApye38#Dg1dwL6ozxU!swLe&F9z5L zGJ}<^ih3o`feZs~ivyVg8m#vszd)o69%58lJCQM9kz_mzh~E*03(9&|vXeYDGtmKd zEC1`6rK*y#Yu0fNXv~;}nJ^ArR#<%0V6d=(%+UXKhAEjT@v-DCw%G~cR}w(4R%nnSv#4}Uu7t`tfK4d2Yf5cST!48#=>E(>W^y##6E*E%;0+P z-Elv=ox`_4@FTYH)RuD@jjAlcI&eT(dX-EUr_pox#(`a&oKdfZGj~8ZQZ=M-o(hDE z9h6kv(5YE9Ae4wzG2Vszzd0CeS}cp5$A<0L3^8W5O7^%-w)|kFj>VyCpvzcWA8>0&T$t^#GEohAoMWl5T@9T<$ALuUctG6%$!L+^8f`oj!C z$|{&cn%g22uh)-etTORWpatgH$#P|tAilVl5M6mz53rLRK*x?&o(bx&_ads!yx#!u z!|tFeOYlC~OL%rJE}M^c9&za6@5;sXtY=?lidHVUNIH_PnfL&}o_7FUnJ9pHIhi%P zWt{1Ml|km?}%)4%s_!b`B0+h)+A<=$3=a>yd+N zG6k!4)x+j^w`@EEh`StAS2hZ2VlSe)^73;44qjv@wQF7q@)>&>S!ZY*pxe6xt1Q91 zY%gNkx%w{9{^lUM>SY0Q^}CrOR;B7?51D$@Az1pv(XB5O(5Lnus4GvO2j1HbX4gCw z;Mevpu+Gv$7K0TWN0)X1J6vesKkPk7J4f#U*b@$5Dn|z=+G=Ga{?80CtF!>VmBfL) zao`f{dd8tsmYPmvg*kRM2WQs8f;>pSE2bCT__~;JE>LzkNNfa@28j+7#9l`hn2!lj z(=9>P`ktg}`(6Ts4F&Qfz-{jZQo4U@3?SgU1`3Yqpkdztff%SARc-o9Z8tau}ji?%nvEvPw;o?M0!i0n+$Wk>3 z6@=e#-e)=Qf+X4LPW-~}oK4RIQ_P$>V0{8HWNR3oPM*tadd;`|^hdrxJ)QE&n@

  • + + + 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..a9cb487 --- /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
    Point 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 zcmd5>X;hQvwx-9$ajMc_4_cX4NdS9P(ALYC;kHuKU?H})4uIs~6j5f71Owz2sR;*6 zYAB!*plUTrDV*Ls`JG)hwPeMMovwMSUXSd}1vL)b7=I5zY@MGPsPrvxsYPEvP zXH#=0=^fvItHtko_wL!}iQU1k%hEm%-)#pL*}nRI_~L!=*q<;VAAUi6Ln%>wBzyL! zkjEe2*OMpCk?iV=2K~Q!p1eHwSjG0aa7#q>p2`w?^>C4uo*uHViMDK|5E3&Ia6S85$x~rZaeb~NXGi1ez z9kF@4c5MmW36_2q;qmIF?b0y8w$@F=%Q2qen3>Dv2#+@(Lq?Dh2N~l1J3nQ7eIgHY zJ8AP)Ov0^*p7P#km(^Yu$Op>L!Te+MFe#@+UZt$H&aK1LE!-tLqVWDF)ZahsQFJaJ zOq4#j2x~kB))Xmy2Ag&K)h7~)jWf*RWx|YyRF=7nPDIY?bRv>Rl>EaIf%I$>o7(mR z6^VRP^Is5t4GmR7%;*ba7#AbthxuW#{lU#l)sPASsnI^4j0y3_u{t1N9!*l%342RuxtqyijJ4E__$jjgZh3^ z&p>d-?fSqN;WJ&?(m1hW;aI5R>(%+n@-iAR0EuG22z|DDgC8CxaCwe$Z&#dWw<}1z zx&K-vxqt|tJhEd}6GNpG5KlqON4WxCEJGX#P}o=|S*{<|5-Q|{xV`UFT*;-;>KRQw%6X?p0l+IR2-4?M~m$xxL#S8^K1~l#2&k? ziu)cW`lmW{?z=%AVl+r0_@CA2WZRayY7fO*fvTXF)|%U4hK_}K-E1Nj!-xcM8;X4O z3w_km#&9Pr!w711#d($i-^^N=d~15*;Rr!Vp6<_zJjgJ0YJSK# zwW>8BdtpmOM*0y%7Cv<>AdO+NH3B&xd<)w<`vX;p1N$9*4><_~_0g6S&ktAfCKH}i zpqcK07U+5N@a0g`{NHj*cfgJ3eSKNdYX9IvNSQ`>CuF|bC|<*H*362MFR0OQYx~fe z5qDK;Ai{i4zx`3dH-nU(ujcgTZ;U*7_K)V}iVq?@Oh2405x@-9k-AS9D3E#z&KGs? zB^Z7!dOgxJ95nM^H*Anz@Ckz-d^OsdRgy;kLJ z30U}}G~MHh%ry2^z7xVdnJ_R;9rX7p4hS@9sd(#33m&>KzlEF470}fOx%mXLk0zfa zyHC#~g_)YU+7k=o)J`9kwSpw;o}2a8b2HAfpymLXKS9`uB@-@5;_qb4Pn0*IED3sU z{)w>(8Zk(w^J?ZqyW(6>dPA_*9d0O+mk34;U1Uc&C)V0K(!sVM6t(8@xtUo)i?>&I zWd<9RM;{=Ge>p1DyJg$L1eG~CIns4|z~F3Y{lAXaS9h050>blhyw~rMeGBt_E&?a% z3Q=7F#b5T~1RF!{sWcaw^~${r_!pq>*#W(C&%s&;*JR1?^S5L%T>f^&6@@ouW{a(n z(&7@Lr6Y!;vY*?=Kd2ymS!(I< zhcum*M}^B%6XcQPcqx|A1?JMsKKg;1U{9T`Vk&rERRykpC7WL+tl0Q%K$u|m#&_Qh z`=2QSG9E-C{&*w*4Gux-n5wePqU zhH1NrY+EoD!lZ`G)T|#Cz6aomZQ4NXf|_>UA#RxyY-8~@r-ZDNH9-6&E-MG$yp@qb ze2O%una+(m8wLGRJXBR~fl6S8McxmLURcf7m2_$wbwaV>oFSHtFX8xMYJLJmgrl*U zUbB6j2@evbQt6ttaM?%dJj#LW4`h5buDGdm8>U7(>xe?G8)<-Gkw$l+XlTK*4M?l+ z!G<_Y@&HOa<%1SW?Mc|&Qt@QUDRG?jAn84msSS6GkPL@Eq6D>FOw1bXy93s*O5iwo zb)N+zI!e769S3;zH|f7n%&*IUMpW%FdIJXIoyMd%*eYna>4}2AY&$%Od-8PUb}FSc zozmc-*v%Mw*QPfQv-!#YE!kH$>F3}OXA?tV4T`9!aI7)-%*90>AM-OR#s>?Yjds4} z;G&tL>F21mX@OajBpCr(UU3el|A_>`Oe6(L&emJ%0$VP`>t$nqFNG1nS-naP{#M(( zF4HriK0;Z+MD$j8b|10{$H#HEm4eRewSgXQYQBRAQ>$sEJv*XMk@3>OY?AnUfNM>I zE1oUXooJLywj1hxmYRD9zxF4Y%~WlE97Bu+OBFY$~ADY9KIB0nyXpK3S};UhDua zOOBpkDa#L7>@hP05Is97YEe8pN>#ejB{@US?OacG)==i!g5puJ43kK( z(sgS(v53XzHSegGUX+gaCZ?A_RqC8p?~eKe4%6*{2se*(Z#bQ4 zX(Y*S{-|Phc4l55tu*utabZBpil1LQ5yKE)2TgQ#DE_tAL7@9h?Z;0NXAIsLAEujx zsqeXfE31H!Z6vFwxzA6CN-C`P+sRdTnjkUML3EUG+s@}(WV)xvh0o;r(e}B=ouS(8 z+PduCZ5Yc{kac1eN+mf?!E2$ED{MTwC|o~ejSL8^^z29!9|G@0ld5q4NSSQJM46xf z+Rg#A-QD|V5iO&E7dIjrpUvcs(!IL-%A;jnOQB+^1U?=c#@Gl3)H@>+7LaK{ zYReO#a={f`qB;)P2~^u*(KS#?`F@BjFqe*?O=8>J&8hYWEPp$ybd~fqdE*M(Q#o4K zqwQ3TzK59!0QH%W>~c&yr5)tiSp6XPBw=tq{91%kCT^WGWC`S|z9mlaU{ICCr?FQ) zOJ|KXX#LZdPRLH2mq5TqB-5_V4 zQIp)kwtg$68uwSz_%uE}k!SJPRil{YdkL2wH2dJ5p=L4@S!t6aLn4&p;9 zK3Q29?5s%&Y>k3r5`cyq3+*Dw8li6ClL$z{>{H;ZTR$kv{MJJ$ zjz12H@|ZvXUdyA?x%^eO6;Drfg8Jpvi>6-}gXM7j04l+9SpPnzZCcCznT->+;*Mxd zb713cTV;3KPm<)&1c&&G;?^wUvAm?}r3Fnx$AZPG7=1i>dbUR*+6<|gJrCiqndQNv z_c5v);AD#Y_M73d1-?pia?xc$7Z6)$mM>(Q*qyn~@Y(YDT3)O=FNsZw4%bIU7c{le zRPGIH8bX?$9P(jd-j4>X@r$MQs^WZIq?;5-x2~Rwsc5h6wMeOXGPi;pfU#5q1S%e( zbUoTeXULf*9#!#Yp|XtLgt!x%qSuYYAY}%Uf>OMUlSYR$lBSRghjL3}<#a8@+%DKpnOmx+oS3@*-eySlWVp>Tk%A6cv@I7g zz8z+xg7{Ml!1m(N=9^={DcDCQ0+--$v!8PtHczlEtainU71@XO0l#Eg_piLt-|6+= zabTwjAiVF&@?-n*b~9S8;{jEsg*4G$@+O>ZY8h?Z-sR62O9mtrrEdB$jti@+722@2 z0<8B^-r|QwDILwGw!o%91N%bZn3Ih)Z@DX`Vysis&jX~qf<+=0eAvIywRk}_BBNb^ zHG+msDe9S<*^IUsgGM^>*29>e)MzoE3Deu`!Kl&qD{Im4p*8Ml=qW0omd^1s&Nu)U zJAh;YuU9XC0R0?fV*)g&Uj-F&J8n0)`nc3~Z$N&=6~G(U8Ut>P55&zQp*9!lhShFK 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..16801d1 --- /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
     Point 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
    +
    + +

    Point 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 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} 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=$('